[英]How do I open sub window after I click on button on main screen in PyQt4
我试图制作一个简单的转换器。 我使用PyQt4设计制作Gui我想知道在点击单个按钮后如何启动新窗口。
这是我使用PyQt4 Designer创建的界面。 这是图片链接:
当我点击货币按钮时,我想启动这个窗口。 这是图片链接:
这是我的main.py代码
from PyQt4 import QtGui
from main_screen import mainscreen
def main():
import sys
qApp = QtGui.QApplication(sys.argv)
aw = mainscreen()
aw.show()
sys.exit(qApp.exec_())
if __name__ == '__main__':
main()
和mainscreen.py的代码
from PyQt4 import QtCore, QtGui
from window_main import Ui_MainWindow
class mainscreen(QtGui.QMainWindow, Ui_MainWindow):
def __init__(self, parent=None):
super(mainscreen,self).__init__(parent)
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
点击货币按钮(货币按钮的对象名称是“currency_bt”)后如何打开新窗口,我必须在同一窗口中编写货币代码,或者我必须在新窗口中写入。 我该怎么做。
我是Python Gui编程的新手。
您在Qt Designer中创建的每个GUI表单都需要使用pyuic转换为python模块。 所以,首先,你需要为做同样的currency.ui
是你做的window_main
。
现在,您可以将货币窗口类导入mainscreen.py
,并将按钮连接到处理程序,以便显示它。
代码看起来像这样:
from PyQt4 import QtCore, QtGui
from window_main import Ui_MainWindow
from currency import Ui_CurrencyWindow
class CurrencyWindow(QtGui.QMainWindow, Ui_CurrencyWindow):
def __init__(self, parent=None):
super(CurrencyWindow, self).__init__(parent)
self.setAttribute(QtCore.Qt.WA_DeleteOnClose)
self.setupUi(self)
class MainScreen(QtGui.QMainWindow, Ui_MainWindow):
def __init__(self, parent=None):
super(MainScreen, self).__init__(parent)
self.setupUi(self)
self.currencyButton.clicked.connect(self.handleCurrencyButton)
def handleCurrencyButton(self):
window = CurrencyWindow(self)
window.show()
在查看这个示例代码之后,您可能会想到最终会导入很多模块,并且需要为每个模块编写大量的样板代码(这并不是很有趣)。
因此,我建议您考虑更改GUI设计,以便有一个包含tabwidget的主窗口,然后为每个转换器分别设置一个选项卡。 这不仅可以使您的应用程序更容易编写,而且还可以使它更好用。
我正在PyQt4中完成我的学士论文。 首先,我也想使用设计器(生成代码很好),但毕竟我在工作期间没有使用它。 也许这是一个品味问题。 但是对于你的问题(我在没有QtDesigner的情况下这样做了):
假设我们有一个主窗口类:
import sys
from PyQt4 import QtCore, QtGui
class mainscreen(QtGui.QMainWindow):
def __init__(self, parent=None):
super(mainscreen,self).__init__(parent)
self.button = QtGui.QPushButton("push")
self.button.clicked.connect(self.pushed)
@pyqtSlot()
def pushed(self):
# in this section here you can create the new window and show it
qApp = QtGui.QApplication(sys.argv)
aw = mainscreen()
aw.show()
sys.exit(qApp.exec_())
有一些很好的教程( http://zetcode.com/gui/pyqt4/帮我入门)。
put this lines: 制作两个程序: main_win.py和second_win.py ,然后在以下行:
from os import system as sh //In the begin
def openewin(self): //In the class main_win
sh("python second_win.py")
准备就绪,只需连接按钮即可实现openewin功能!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.