Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在PyQt4中单击主屏幕上的按钮后,如何打开子窗口_Python_User Interface_Pyqt4 - Fatal编程技术网

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

Python 在PyQt4中单击主屏幕上的按钮后,如何打开子窗口,python,user-interface,pyqt4,Python,User Interface,Pyqt4,嗨,我想做一个简单的转换器。 我已经使用了PyQt4来设计Gui 我想知道在单击单个按钮后如何启动新窗口 这是我使用PyQt4设计器创建的接口。 以下是图像链接: 当我点击货币按钮时,我想启动这个窗口。 以下是图像链接: 这是我的main.py的代码 from PyQt4 import QtGui from main_screen import mainscreen def main(): import sys qApp = QtGui.QApplication(sys.a

嗨,我想做一个简单的转换器。 我已经使用了PyQt4来设计Gui 我想知道在单击单个按钮后如何启动新窗口

这是我使用PyQt4设计器创建的接口。 以下是图像链接:

当我点击货币按钮时,我想启动这个窗口。 以下是图像链接:

这是我的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()
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)
mainscreen.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()
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编程新手。

我正在用PyQt4完成我的学士论文。首先,我还想使用设计器(生成代码很好),但毕竟我在工作中没有使用它。也许这是品味的问题。 但对于你的问题(我在没有设计师的情况下做了这件事):

假设我们有一个主窗口类:

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_())

有一些很好的教程(帮助我入门)。

您在Qt Designer中创建的每个GUI表单都需要使用pyuic转换为python模块。因此,首先,您需要对
currency.ui
执行与对
window\u 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设计,以便您有一个主窗口包含TabWIGET,然后为每个转换器设置一个单独的选项卡。这不仅会使您的应用程序更易于编写,而且会使其使用更方便。

制作两个程序:main_win.py和second_win.py,然后在main_win.py中写下以下行:

from os import system as sh               //In the begin

def openewin(self):                       //In the class main_win
    sh("python second_win.py") 

准备好了,只需将按钮连接到OpenEVIN功能

谢谢大家!!你真的很有帮助,但我更喜欢Pyqt4 designer,而不是编写所有Gui代码。如果你想认真对待PyQt,强烈建议不要使用qtdesigner。嘿@kartikg3,谢谢你的建议,但我想qtdesigner就像是初学者在Gui上动手的动机,否则,你很容易会因为命令行编码gui而气馁。是的,如果你一开始就很好,但正如我说的,一旦你开始认真对待Qt,手工编码元素会更干净。查看本文:对于将来遇到这种情况的任何人,我只想说我完全不同意这样的建议,即您应该优先使用QT设计器来编写GUI代码。在Qt Designer中创建任何大于5个小部件的UI都会更快。如果这不是真的,那么Qt的创建者就永远不会制作Qt Designer。谢谢!“你真是帮了大忙,兄弟。”卡提克贾格代尔如果你觉得有什么有用的答案,请投赞成票。如果一个答案回答了你的问题并澄清了你的疑问,请继续接受它。嘿@kartikg3,我试图对答案进行投票表决,但我没有声誉,需要有50个声誉才能投票表决一个答案。但是,是的,当我达到那个水平时,我会确保对答案投赞成票。