单击PyQt4中主屏幕上的按钮后,如何打开子窗口

Voi*_*ero 3 python user-interface pyqt4

我试图制作一个简单的转换器.我使用PyQt4设计制作Gui我想知道在点击单个按钮后如何启动新窗口.

这是我使用PyQt4 Designer创建的界面.这是图片链接:

一个

当我点击货币按钮时,我想启动这个窗口.这是图片链接:

b

这是我的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()
Run Code Online (Sandbox Code Playgroud)

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)
Run Code Online (Sandbox Code Playgroud)

点击货币按钮(货币按钮的对象名称是"currency_bt")后如何打开新窗口,我必须在同一窗口中编写货币代码,或者我必须在新窗口中写入.我该怎么做.

我是Python Gui编程的新手.

ekh*_*oro 7

您在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()
Run Code Online (Sandbox Code Playgroud)

在查看这个示例代码之后,您可能会想到最终会导入很多模块,并且需要为每个模块编写大量的样板代码(这并不是很有趣).

因此,我建议您考虑更改GUI设计,以便有一个包含tabwidget的主窗口,然后为每个转换器分别设置一个选项卡.这不仅可以使您的应用程序容易编写,而且还可以使它更好用.