我有一个从QtDesigner生成的接口文件,我希望在发生更改时保持不变。
有一个名为application.py
的主文件来处理所有函数,还有一个文件严格用于接口。
我正在使用PyQt5。
我还没有找到任何关于这个特定问题的教程,任何建议都会有所帮助。
来自YatsiInterface.py
的代码(缩短(
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_YatsiWindow(object):
def setupUi(self, YatsiWindow):
YatsiWindow.setObjectName("YatsiWindow")
YatsiWindow.resize(800, 516)
icon = QtGui.QIcon()
icon.addPixmap(QtGui.QPixmap("Terraria.ico"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
YatsiWindow.setWindowIcon(icon)
self.windowLayout = QtWidgets.QWidget(YatsiWindow)
self.windowLayout.setObjectName("windowLayout")
self.horizontalLayout = QtWidgets.QHBoxLayout(self.windowLayout)
self.quitButton.setObjectName("quitButton")
self.buttonsLeftLayout.addWidget(self.quitButton)
YatsiWindow.setCentralWidget(self.windowLayout)
self.statusbar = QtWidgets.QStatusBar(YatsiWindow)
self.statusbar.setObjectName("statusbar")
YatsiWindow.setStatusBar(self.statusbar)
self.retranslateUi(YatsiWindow)
QtCore.QMetaObject.connectSlotsByName(YatsiWindow)
def retranslateUi(self, YatsiWindow):
_translate = QtCore.QCoreApplication.translate
YatsiWindow.setWindowTitle(_translate("YatsiWindow", "Yatsi - Server Interface"))
self.quitButton.setText(_translate("YatsiWindow", "Quit"))
如何将self.quitButton.clicked.connect(QtCore.QCoreApplication.instance().quit())
与上述代码一起使用?我知道用from YatsiInterface import Ui_YatsiWindow
导入文件,但我不知道如何在不编辑界面文件的情况下创建按钮功能。
编辑:
我将在下面添加我的损坏代码。
import sys
from YatsiInterface import Ui_YatsiWindow
from PyQt5 import QtCore, QtGui, QtWidgets
app = QtWidgets.QApplication([])
YatsiWindow = QtWidgets.QMainWindow()
ui = Ui_YatsiWindow()
ui.setupUi(YatsiWindow)
# Here's the bad part
ui.setupUi.btn.clicked.connect(QtCore.QCoreApplication.instance().quit)
# Up there ^
YatsiWindow.show()
sys.exit(app.exec_())
谢谢你的帮助。
这将是连接信号的方法
ui.quitButton.clicked.connect(QtCore.QCoreApplication.instance().quit)
话虽如此,你可能不想这么做。您可能应该连接到窗口的.close
方法。当窗口关闭时,默认情况下,Qt将退出事件循环并退出。
ui.quitButton.clicked.connect(YatsiWindow.close)
from YatsiInterface import Ui_YatsiWindow
from PyQt5 import QtCore, QtGui
class my_application(QtGui.QWidget, Ui_YatsiWindow):
def __init__(self):
super(my_application, self).__init__()
self.setupUi(self)
self.quitButton.clicked.connect(self.my_mythod)
def my_method(self):
pass #all your code for the buttons clicked signal
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
ui = my_application()
ui.show()
sys.exit(app.exec_())
这个my_application类继承了您的用户界面类。现在,您可以编写与按钮相关的函数,而无需编辑用户界面文件。
self.quitButton.clicked.connect(self.close)
这将在单击按钮时关闭您的用户界面。