【问题标题】:Using Qt Designer files in python script在 python 脚本中使用 Qt Designer 文件
【发布时间】:2017-02-21 18:55:00
【问题描述】:

我需要从 login.py 打开一个对话框,如果成功,对话框将关闭并从 home.py 打开一个主窗口。我需要使用 Qt Designer 使用 pyuic4 创建的文件来执行此操作。总之,我需要通过 main.py 调用 login.pyhome.py

main.py的代码:

from PyQt4 import QtGui, QtCore 
import sqlite3, time
from login import Ui_Dialog
from home import Ui_MainWindow

# Here I need to know how to call login.py, and
# after logged in, how to change to home.py

class RunApp():
    pass        

if __name__ == '__main__':

    app = QtGui.QApplication(sys.argv)
    window = RunApp()
    sys.exit(app.exec_())

login.py的代码:

class Ui_Dialog(object):
    def setupUi(self, Dialog):
        Dialog.setObjectName(_fromUtf8("Dialog"))
        Dialog.resize(194, 156)

home.py的代码:

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName(_fromUtf8("MainWindow"))
        MainWindow.resize(635, 396)
        MainWindow.setAutoFillBackground(False)

更新: 感谢我的朋友 ;) 使用此代码为我工作:

# -*- coding: utf-8 -*-
from PyQt4 import QtGui, QtCore
from login import Ui_Dialog
from home import Ui_MainWindow
import sqlite3, time, sys, os

class MyLogin(QtGui.QDialog):
    def __init__(self):
        super().__init__()
        self.ui = Ui_Dialog()
        self.ui.setupUi(self)
        self.ui.buttonBox.accepted.connect(self.openHome)
    def openHome(self):
        ui2 = MyHome()
        ui2.show()
        ui2.exec_()


class MyHome(QtGui.QMainWindow):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.ui2 = Ui_MainWindow()
        self.ui2.setupUi(self)

if __name__=='__main__':
    root = QtGui.QApplication(sys.argv)
    app = MyLogin()
    app.show()
    root.exec_()

【问题讨论】:

    标签: python pyqt qt-designer pyuic


    【解决方案1】:

    创建一个派生自QWidget的类,并在其__init__中实例化ui类,然后在其上调用setupUi(self)

    class RunApp():
        pass  
    
    class MyDialog(QWidget):
        def __init__(self, parent=None):
            super().__init__()
            self.ui = Ui_Dialog()
            self.ui.setupUi(self)
    
    # do same for Ui_MainWindow via class MyMainWindow(QWidget)
    ...
    

    这在

    中有解释

    【讨论】:

      【解决方案2】:

      用于基于 PyQt 的应用程序的登录页面。我建议使用QstackedWidget

      stackedwidget 中的Page1 用于登录页面

      stackwidget 中的 Page2 用于主屏幕

      您所需要的只是一个简单的登录功能,它将改变用户名和密码并允许用户移动到主屏幕。

      您可以更改当前索引以打开主屏幕。

        self.stackedWidget.setCurrentIndex(1)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-11-18
        • 2019-05-27
        • 1970-01-01
        • 2017-06-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多