pyqt5界面使用几种方式

在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, '错误警告', '账号或者密码不可为空!')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PyQt5 中,界面跳转可以通过以下几种方式实现: 1. 使用 QStackedWidget 控件:QStackedWidget 是一个多页面容器,可以将多个页面堆叠在同一个窗口中,然后通过设置当前显示的页面来实现界面跳转。 2. 使用 QDialog 控件:QDialog 是一个对话框控件,可以用来显示一个模态对话框,通过在对话框中放置其他控件来实现不同页面之间的跳转。 3. 使用 QMainWindow 控件:QMainWindow 是一个主窗口控件,可以将多个子窗口嵌入其中,然后通过切换子窗口来实现界面跳转。 下面是一个使用 QStackedWidget 控件实现界面跳转的示例代码: ```python from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QStackedWidget, QVBoxLayout class MainWindow(QWidget): def __init__(self): super().__init__() # 创建两个页面 self.page1 = QWidget() self.page2 = QWidget() # 在页面中添加控件 self.btn1 = QPushButton('跳转到页面2', self.page1) self.btn2 = QPushButton('跳转到页面1', self.page2) # 创建一个堆叠容器 self.stack = QStackedWidget(self) # 将页面添加到堆叠容器中 self.stack.addWidget(self.page1) self.stack.addWidget(self.page2) # 创建一个垂直布局,将堆叠容器和按钮添加进去 layout = QVBoxLayout() layout.addWidget(self.stack) layout.addWidget(self.btn1) layout.addWidget(self.btn2) # 设置布局 self.setLayout(layout) # 绑定按钮的点击事件 self.btn1.clicked.connect(lambda: self.stack.setCurrentWidget(self.page2)) self.btn2.clicked.connect(lambda: self.stack.setCurrentWidget(self.page1)) if __name__ == '__main__': app = QApplication([]) window = MainWindow() window.show() app.exec_() ``` 这个示例程序中,我们创建了两个页面,并在页面中分别放置了一个按钮。然后我们创建了一个 QStackedWidget 堆叠容器,并将两个页面添加进去。最后,我们将堆叠容器和按钮添加到一个垂直布局中,并将该布局设置为窗口的布局。通过绑定按钮的点击事件,我们可以实现在两个页面之间的跳转。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值