我有一個 Python QT5 Designer 新手問題。在此處閱讀有關在 python 中各自函式之外不可用的變數的大量資訊,但大多數示例將結果回傳給被呼叫的函式,而不是來自另一個觸發的事件。我可能錯過了一些東西,因為這在其他語言中很容易做到。正如您在我的示例中所看到的,這些函式是通過單擊 gui 上的按鈕呼叫的,因此單擊停止按鈕時需要啟動時間的變數可用。這個例子應該簡單地從另一個中減去一次,并將結果顯示在 Qt5 視窗上的標簽中。任何幫助,將不勝感激。
import sys
from PyQt5 import QtWidgets, uic
from PyQt5.QtWidgets import*
from PyQt5.uic import loadUi
from PyQt5.QtCore import QTime, QDateTime, Qt
qtgui_file = r"example.ui"
Ui_MainWindow, QtBaseClass = uic.loadUiType(qtgui_file)
class ExampleApp(QtWidgets.QMainWindow, Ui_MainWindow):
def __init__(self,parent=None):
QMainWindow.__init__(self)
Ui_MainWindow.__init__(self)
self.setupUi(self)
self.pbstart.clicked.connect(self.setstarttime)
self.pbstop.clicked.connect(self.setstoptime)
def setstarttime(self):
self.pbstart.setEnabled(False)
self.pbstop.setEnabled(True)
starttime = QTime.currentTime()
self.lblstart.setText(starttime.toString(Qt.DefaultLocaleLongDate))
def setstoptime(self):
self.pbstart.setEnabled(True)
self.pbstop.setEnabled(False)
endtime = QTime.currentTime()
self.lblstop.setText(endtime.toString(Qt.DefaultLocaleLongDate))
#..code in here to subtract endtime from startime stored in timediff variable
#?????
timediff = "...dummy string as starttime is not defined in this function"
self.lbltimediff.setText(timediff)
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
window = ExampleApp()
window.show()
sys.exit(app.exec_())```
uj5u.com熱心網友回復:
我的建議是使用 global 關鍵字使變數成為全域變數。
def setstarttime(self):
self.pbstart.setEnabled(False)
self.pbstop.setEnabled(True)
global starttime
starttime = QTime.currentTime()
self.lblstart.setText(starttime.toString(Qt.DefaultLocaleLongDate))
或者
您只需將它們定義為類變數,例如
self.starttime = datetime.datetime.min()
然后在您想要的任何函式中使用該變數。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/392577.html
