我有一个密码的代码,并在PyQt中为它设计了一个GUI,现在正试图集成这两个密码,但我遇到了麻烦。在
我希望能够按下generatekey按钮,然后运行generatekey函数,并将其显示在按钮左侧的文本框中。我尝试使用.setText()但无法使其工作。文本框的对象名为keytext。不知道该怎么办,我现在按一下按钮就崩溃了。在
from PyQt5 import QtCore, QtGui, QtWidgets
import sys, random
import cipher ## Designed GUI
LETTERS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
class CipherDesign(QtWidgets.QMainWindow, cipher.Ui_MainWindow):
def __init__(self, parent=None):
super(CipherDesign, self).__init__(parent)
self.setupUi(self)
self.BGenerate.clicked.connect(self.generatekey) # Generate Button
def generatekey():
key = list(LETTERS)
random.shuffle(key)
return ''.join(key)
def main():
app = QtWidgets.QApplication(sys.argv)
form = CipherDesign()
form.show()
app.exec_()
if __name__ == "__main__":
main()
您的问题是您的
generateKey
方法缺少自变量,然后错误地返回键值,而不是用setText
赋值。在在普通Python中,当您调用
self.generateKey()
时,省略self参数只会给出一个“numberofarguments”错误。但是在这里它被PyQT调用,这(有点出乎意料)导致了崩溃。在在Python中,对对象(如
self.generateKey()
)的方法的调用被转换为类似于generateKey(self)
的调用。self
这里只是一个任意的名称(self按惯例使用)。这是一种将方法与调用它的对象相关联的机制。然后,在方法体中,名称self
在作用域内,并绑定到对象实例,因为在Python中使用它需要它。在所以你应该有这样的东西:
相关问题 更多 >
编程相关推荐