亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 PyQt5 中制作循環

在 PyQt5 中制作循環

郎朗坤 2023-12-29 17:09:40
我正在嘗試制作一個內部有循環的程序。我認為問題在于循環啟動程序只是在其中循環。代碼 -from PyQt5 import QtCore, QtGui, QtWidgetsclass Ui_MainWindow(object):    def setupUi(self, MainWindow):        MainWindow.setObjectName("MainWindow")        MainWindow.resize(319, 258)        self.centralwidget = QtWidgets.QWidget(MainWindow)        self.centralwidget.setObjectName("centralwidget")        self.checkBox = QtWidgets.QCheckBox(self.centralwidget)        self.checkBox.setGeometry(QtCore.QRect(20, 60, 281, 51))        self.checkBox.setObjectName("checkBox")        MainWindow.setCentralWidget(self.centralwidget)        self.menubar = QtWidgets.QMenuBar(MainWindow)        self.menubar.setGeometry(QtCore.QRect(0, 0, 319, 21))        self.menubar.setObjectName("menubar")        MainWindow.setMenuBar(self.menubar)        self.statusbar = QtWidgets.QStatusBar(MainWindow)        self.statusbar.setObjectName("statusbar")        MainWindow.setStatusBar(self.statusbar)        self.retranslateUi(MainWindow)        QtCore.QMetaObject.connectSlotsByName(MainWindow)    def retranslateUi(self, MainWindow):        _translate = QtCore.QCoreApplication.translate        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))        self.checkBox.setText(_translate("MainWindow", "CheckBox"))        self.checkBox.clicked.connect(self.potato)    def potato(self, value):        while self.checkBox.isChecked:            print('potato')if __name__ == "__main__":    import sys    app = QtWidgets.QApplication(sys.argv)    MainWindow = QtWidgets.QMainWindow()    ui = Ui_MainWindow()    ui.setupUi(MainWindow)    MainWindow.show()    sys.exit(app.exec_())```
查看完整描述

1 回答

?
波斯汪

TA貢獻1811條經驗 獲得超4個贊

  1. 不要修改 Qt Designer 生成的代碼,而是創建另一個從適當的小部件繼承的類,并使用初始類來填充它。

  2. while 循環阻塞接口,使用 QTimer 或額外的線程、信號和槽。

from PyQt5 import QtCore, QtGui, QtWidgets



class Ui_MainWindow(object):

    def setupUi(self, MainWindow):

        MainWindow.setObjectName("MainWindow")

        MainWindow.resize(319, 258)

        self.centralwidget = QtWidgets.QWidget(MainWindow)

        self.centralwidget.setObjectName("centralwidget")

        self.checkBox = QtWidgets.QCheckBox(self.centralwidget)

        self.checkBox.setGeometry(QtCore.QRect(20, 60, 281, 51))

        self.checkBox.setObjectName("checkBox")

        MainWindow.setCentralWidget(self.centralwidget)

        self.menubar = QtWidgets.QMenuBar(MainWindow)

        self.menubar.setGeometry(QtCore.QRect(0, 0, 319, 21))

        self.menubar.setObjectName("menubar")

        MainWindow.setMenuBar(self.menubar)

        self.statusbar = QtWidgets.QStatusBar(MainWindow)

        self.statusbar.setObjectName("statusbar")

        MainWindow.setStatusBar(self.statusbar)


        self.retranslateUi(MainWindow)

        QtCore.QMetaObject.connectSlotsByName(MainWindow)


    def retranslateUi(self, MainWindow):

        _translate = QtCore.QCoreApplication.translate

        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))

        self.checkBox.setText(_translate("MainWindow", "CheckBox"))



class Demo(QtWidgets.QMainWindow, Ui_MainWindow):

    def __init__(self):

        super().__init__()

        self.setupUi(self)


        self.checkBox.clicked.connect(self.potato)

        

        self.timer = QtCore.QTimer()

        self.timer.timeout.connect(self.on_timer)


    def potato(self, value):

        if value:

            self.timer.start(1000)

        else:

            self.timer.stop()

            

    def on_timer(self):

        print('potato')

         


if __name__ == "__main__":

    import sys

    app = QtWidgets.QApplication(sys.argv)

    w = Demo()

    w.show()

    sys.exit(app.exec_())

https://img1.sycdn.imooc.com/658e8d6b0001f68904770308.jpg

查看完整回答
反對 回復 2023-12-29
  • 1 回答
  • 0 關注
  • 177 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號