我無法理解由pyuic4主要使用的connectSlotsByName()方法。目前爲止,PyQt文件中的類是單一的,因爲我們可以使用self,它將與整個單個對象相關聯..但是,我們試圖用各種類別的不同文件中的問題,並使用connectSlotsByName(需要)出現..這是我遇到的這是奇怪..瞭解pyqt中connectSlotsByName()的問題?
我創建了一個堆疊部件..
我放置我的第一個小工具..它 有一個名爲「下一步>」的按鈕。
單擊[下一步]它隱藏當前 小部件,並增加了其具有「點擊我」按鈕,另一小..
這裏的問題是單擊事件「點擊我」在第二個按鈕這是一個最小的例子,我可以給我原來的問題..請幫助我..
這是文件1 ..(它有父母堆疊的小部件,它是第一頁)。單擊[下一步]它增加了第二頁,其中有文件2「clickme」按鈕..
from PyQt4 import QtCore, QtGui
import file2
class Ui_StackedWidget(QtGui.QStackedWidget):
def __init__(self,parent=None):
QtGui.QStackedWidget.__init__(self,parent)
self.setObjectName("self")
self.resize(484, 370)
self.setWindowTitle(QtGui.QApplication.translate("self", "stacked widget", None, QtGui.QApplication.UnicodeUTF8))
self.createWidget1()
def createWidget1(self):
self.page=QtGui.QWidget()
self.page.setObjectName("widget1")
self.pushButton=QtGui.QPushButton(self.page)
self.pushButton.setGeometry(QtCore.QRect(150, 230, 91, 31))
self.pushButton.setText(QtGui.QApplication.translate("self", "Next >", None, QtGui.QApplication.UnicodeUTF8))
self.addWidget(self.page)
QtCore.QMetaObject.connectSlotsByName(self.page)
QtCore.QObject.connect(self.pushButton,QtCore.SIGNAL('clicked()'),self.showWidget2)
def showWidget2(self):
self.page.hide()
obj=file2.widget2()
obj.createWidget2(self)
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
ui = Ui_StackedWidget()
ui.show()
sys.exit(app.exec_())
這裏的文件2
from PyQt4 import QtGui,QtCore
class widget2():
def createWidget2(self,parent):
self.page = QtGui.QWidget()
self.page.setObjectName("page")
self.parent=parent
self.groupBox = QtGui.QGroupBox(self.page)
self.groupBox.setGeometry(QtCore.QRect(30, 20, 421, 311))
self.groupBox.setObjectName("groupBox")
self.groupBox.setTitle(QtGui.QApplication.translate("self", "TestGroupBox", None, QtGui.QApplication.UnicodeUTF8))
self.pushButton = QtGui.QPushButton(self.groupBox)
self.pushButton.setGeometry(QtCore.QRect(150, 120, 92, 28))
self.pushButton.setObjectName("pushButton")
self.pushButton.setText(QtGui.QApplication.translate("self", "Click Me", None, QtGui.QApplication.UnicodeUTF8))
self.parent.addWidget(self.page)
self.parent.setCurrentWidget(self.page)
QtCore.QMetaObject.connectSlotsByName(self.page)
QtCore.QObject.connect(self.pushButton,QtCore.SIGNAL('clicked()'),self.printMessage)
def printMessage(self):
print("Hai")
雖然在這兩個小部件(我的意思頁)
QtCore.QMetaObject.connectSlotsByName(self.page)
第二個對話框中的點擊信號沒有得到處理。在此先感謝..可能是一個初學者的問題..
由於最大..它幫助了我很多理解的概念.. – Jeba 2010-03-25 05:07:25
這是一個非常明確的和有用的解釋。 +1 – umbe1987 2017-12-12 20:33:05