gpt4 book ai didi

python - 信号和函数之间的 PyQt 程序连接不起作用

转载 作者:行者123 更新时间:2023-12-04 10:21:14 24 4
gpt4 key购买 nike

在这个非常简单的基于 PyQt 的 Python 程序中 start按钮不起作用,开始按钮和_calculateResult之间似乎没有联系方法。我想在 _connectSignals()方法是错误的,但我找不到它。你有什么想法吗?谢谢。

import sys

from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QLineEdit, QPushButton, QHBoxLayout

class TimerUi(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle('Basic Timer')
self.setFixedSize(235, 235)
self.generalLayout = QHBoxLayout()
self._centralWidget = QWidget(self)
self.setCentralWidget(self._centralWidget)
self._centralWidget.setLayout(self.generalLayout)
self._createDisplayAndButtons()

def _createDisplayAndButtons(self):
self.display = QLineEdit()
self.display.setFixedHeight(35)
self.generalLayout.addWidget(self.display)

self.buttons = {}
self.buttons['start'] = QPushButton('Start')
self.buttons['start'].setFixedSize(40, 40)
self.generalLayout.addWidget(self.buttons['start'])

def setDisplayText(self, text):
self.display.setText(text)
self.display.setFocus()

class PyCalcCtrl:
def __init__(self, view):
self._view = view
self._connectSignals()

def _calculateResult(self):
self._view.setDisplayText('Time is 17:13')

def _connectSignals(self):
self._view.buttons['start'].clicked.connect(self._calculateResult)

def main():
basic_timer = QApplication(sys.argv)
view = TimerUi()
view.show()
PyCalcCtrl(view=view)
sys.exit(basic_timer.exec_())


if __name__ == '__main__':
main()

最佳答案

通过创建 PyCalcCtrl 对象而不将其分配给变量,GC 将其删除。解决方案是将该对象分配给一个变量:

def main():
basic_timer = QApplication(sys.argv)
view = TimerUi()
view.show()
ctrl = PyCalcCtrl(view=view)
sys.exit(basic_timer.exec_())

关于python - 信号和函数之间的 PyQt 程序连接不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60840579/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com