在Qt Designer中添加了信号槽,可以不在Example进行绑定。
编辑添加:
添加完显示:
第一种
原始ui的加载方式需要通过uic模块,此处main.ui是界面。
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5 import uic
class Example(QWidget):
def __init__(self):
super(Example, self).__init__()
uic.loadUi('UI_signal.ui', self)
def show_number(self):
self.label.setText("9527")
if __name__ == "__main__":
app = QApplication([])
ex = Example()
ex.show()
app.exec_()
第二种、第三种是main.ui通过转换变成了ui.py
pyuic5 main.ui -o ui.py
这种加载只需要from xx import xx就行
第二种
from PyQt5.QtWidgets import QApplication, QWidget
from UI_signal import Ui_Form #界面
class Example(QWidget, Ui_Form):
def __init__(self):
super(Example, self).__init__()
self.setupUi(self)
def show_number(self):
self.label.setText("9527")
if __name__ == "__main__":
app = QApplication([])
window = Example()
window.show()
app.exec_()
第三种
from PyQt5.QtWidgets import QApplication, QWidget
from UI_signal import Ui_Form #界面
class Example(QWidget):
def __init__(self):
super(Example, self).__init__()
self.ui = Ui_Form()
self.ui.setupUi(self)
def show_number(self):
self.ui.label.setText("9527")
if __name__ == "__main__":
app = QApplication([])
ex = Example()
ex.show()
app.exec_()
几种方式都需要掌握
后续补充
以下是一个继承了QDialog的Python示例代码,通过ui文件来初始化对话框:
from PyQt5 import uic
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import*
class login(QDialog):
def __init__(self, parent=None):
super(login, self).__init__(parent)
uic.loadUi('login.ui', self)
if __name__ == "__main__":
app = QApplication([])
app.setWindowIcon(QIcon('./logo.jpg')) # 加载logo
window = login()
window.show()
app.exec_()
以下是一个继承了QMainWindow的Python示例代码,通过ui文件来初始化对话框:
from PyQt5 import uic
from PyQt5.QtWidgets import QApplication, QMainWindow
class MyWindow(QMainWindow):
def __init__(self):
super().__init__()
uic.loadUi('login.ui', self)
if __name__ == '__main__':
app = QApplication([])
window = MyWindow()
window.show()
app.exec_()
补充说明
QMainWindow、QDialog和QWidget是PyQt5中常用的三种窗口类型,它们之间的区别在于:
QMainWindow通常用于应用程序的主窗口,它具有一个菜单栏、工具栏以及一些可放置其他QWidget的区域(如中央部件、状态栏等)。它的设计目标是提供一个具有特定功能的主界面,同时允许用户打开和管理其他窗口。
QDialog通常用于显示一个模态对话框,它可以包含各种输入、消息和操作控件,并返回用户输入的结果。它没有内置的菜单栏和工具栏,并且通常只有一个按钮组来进行确认和取消操作。
QWidget是所有用户界面控件的基础类,它本身不具有任何特定的行为,但可以作为其他高级界面控件的容器使用,例如QMainWindow和QDialog都是从QWidget派生而来的。
因此,如果您需要创建一个应用程序的主窗口,那么您应该使用QMainWindow;如果您需要创建一个模态对话框来输入或显示一些信息,则应该使用QDialog;如果您需要创建一个不带任何特殊行为的简单控件,则应该使用QWidget。
当然,在某些情况下,这三种窗口类型之间的区别可能会变得模糊,比如当您需要创建一个带有菜单栏和工具栏的对话框时,或者需要将一个对话框作为主窗口使用时,您可能需要重新考虑使用哪种类型的窗口。
4-18学习补充
QDialog的两种方式的对比
第一种
class login(QDialog): # 登录界面
def __init__(self, parent=None):
super(login, self).__init__(parent)
uic.loadUi('login.ui', self)
# 绑定按钮事件
self.button_enter.clicked.connect(self.button_enter_verify)
self.button_quit.clicked.connect(self.close) # 退出
def button_enter_verify(self):
login_id = self.findChild(QLineEdit, "login_id")
passwd = self.findChild(QLineEdit, "passwd")
if login_id.text() == "" or passwd.text() == "":
QMessageBox.critical(self, '错误警告', '账号或者密码不可为空!')
else:
......
第二种
from login_ui import login_ui #QT designer创建的ui转化为login_ui.py文件,类名为login_ui
class login(QDialog, login_ui): # 登录界面,继承了login_ui
def __init__(self, parent=None):
super(login, self).__init__(parent)
self.setupUi(self)
# 绑定按钮事件
self.button_enter.clicked.connect(self.button_enter_verify)
self.button_quit.clicked.connect(self.close) # 退出
def button_enter_verify(self):
login_id = self.login_id
passwd = self.passwd
if login_id.text() == "" or passwd.text() == "":
QMessageBox.critical(self, '错误警告', '账号或者密码不可为空!')