Python PyQt5可以';t在单独的ui文件中使用预定义的小部件
我在PyQt5中遇到了一个问题,我有一个单独的ui文件(仍然是python文件而不是.ui),我正在尝试连接一个按钮,该按钮将位于该文件中,但由于某些原因,这对我不起作用。 这是我的密码Python PyQt5可以';t在单独的ui文件中使用预定义的小部件,python,python-3.x,pyqt,pyqt5,qt-designer,Python,Python 3.x,Pyqt,Pyqt5,Qt Designer,我在PyQt5中遇到了一个问题,我有一个单独的ui文件(仍然是python文件而不是.ui),我正在尝试连接一个按钮,该按钮将位于该文件中,但由于某些原因,这对我不起作用。 这是我的密码 from PyQt5 import QtCore, QtGui, QtWidgets from gui import Ui_Form class Main(QtWidgets.QMainWindow): def __init__(self): super(Main, self).__i
from PyQt5 import QtCore, QtGui, QtWidgets
from gui import Ui_Form
class Main(QtWidgets.QMainWindow):
def __init__(self):
super(Main, self).__init__()
self.ui = Ui_Form()
self.ui.setupUi(self)
self.show()
self.Ui_Form.exit.clicked.connect(self.handle)
def handle(self):
self.print("hello")
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
Form = QtWidgets.QWidget()
ui = Ui_Form()
ui.setupUi(Form)
Form.show()
sys.exit(app.exec_())
下面是我使用pyuic自动生成的gui文件中的一些代码:
self.exit = QtWidgets.QPushButton(Form)
self.exit.setGeometry(QtCore.QRect(375, 270, 115, 27))
self.exit.setObjectName("exit")
同样的过程在Qt4中也适用于我,所以我不明白为什么它在这里不起作用?您必须使用ui属性来访问按钮。您必须更改:
self.Ui_Form.exit.clicked.connect(self.handle)
致:
注意:通常在使用小部件模板时,它将该元素命名为表单
,将设计类命名为Ui\u表单
,因此您应该使用QWidget
作为类基础
完整代码:
class Main(QtWidgets.QWidget):
def __init__(self):
super(Main, self).__init__()
self.ui = Ui_Form()
self.ui.setupUi(self)
self.show()
self.ui.exit.clicked.connect(self.handle)
def handle(self):
self.print("hello")
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
w = Main()
w.show()
sys.exit(app.exec_())
是的,我知道它应该是ui,但它不起作用,所以我有点绝望了。@SS2你基于Qt Designer的模板是什么:MainWindow、Dialog还是Widget?看得好一点,我发现你从来没有使用过Main
classHaha,我只是犯了一个愚蠢的错误,没有运行Main()。谢谢
class Main(QtWidgets.QWidget):
def __init__(self):
super(Main, self).__init__()
self.ui = Ui_Form()
self.ui.setupUi(self)
self.show()
self.ui.exit.clicked.connect(self.handle)
def handle(self):
self.print("hello")
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
w = Main()
w.show()
sys.exit(app.exec_())