在 python 脚本中使用 Qt Designer 文件
Using Qt Designer files in python script
我需要从 login.py 打开一个对话框,然后如果成功,对话框将关闭并从 [=25 打开一个 main-window =]home.py。我需要使用 Qt Designer 使用 pyuic4 创建的文件来执行此操作。总之,我需要调用 login.py 和 home.py 虽然 main.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_()
创建一个派生自 QWidget
的 class,并在其 __init__
中实例化 ui class,然后调用 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)
...
这在
中有解释
- Qt docs(您必须执行通常的 C++ -> Python 翻译)
- Qt examples for Designer(您必须执行通常的 C++ -> Python 翻译)
- PyQt examples
用于基于 PyQt 的应用程序的登录页面。我建议使用 QstackedWidget
Page1 in stackedwidget for login page
Page2 in stackwidget for home screen
您只需要一个简单的登录功能,它将验证用户名和密码并允许用户移至主屏幕。
您可以更改当前索引以打开主屏幕。
self.stackedWidget.setCurrentIndex(1)
我需要从 login.py 打开一个对话框,然后如果成功,对话框将关闭并从 [=25 打开一个 main-window =]home.py。我需要使用 Qt Designer 使用 pyuic4 创建的文件来执行此操作。总之,我需要调用 login.py 和 home.py 虽然 main.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_()
创建一个派生自 QWidget
的 class,并在其 __init__
中实例化 ui class,然后调用 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)
...
这在
中有解释- Qt docs(您必须执行通常的 C++ -> Python 翻译)
- Qt examples for Designer(您必须执行通常的 C++ -> Python 翻译)
- PyQt examples
用于基于 PyQt 的应用程序的登录页面。我建议使用 QstackedWidget
Page1 in stackedwidget for login page
Page2 in stackwidget for home screen
您只需要一个简单的登录功能,它将验证用户名和密码并允许用户移至主屏幕。
您可以更改当前索引以打开主屏幕。
self.stackedWidget.setCurrentIndex(1)