一、PyQt5实现Python界面设计_QtWidgets (第一个窗体界面)

目录

一、介绍

二、实例部分

(1)第一个主窗口应用

(2)让窗口居中显示

 (3)窗体的基本属性(窗体属性,工作区属性)

 (4)设置窗体图标

一、介绍

1、PyQt是一个创建GUI应用程序的工具包。它是Python编程语言和Qt库的成功融合。

2、官网手册:http://​https://doc.qt.io/qtforpython-5/PySide2/QtWidgets/index.html​

3、注意使用面对对象方式进行开发,以便后续的更改与开发。

(1)界面与逻辑分离

(2)事件与设计分离

二、实例部分

(1)第一个主窗口应用

import sys
from PyQt5.QtWidgets import QMainWindow,QApplication
from PyQt5.QtGui import QIcon

#Class A(B)既A继承B
class FirstMainWin(QMainWindow):
    def __init__(self):
        super(FirstMainWin,self).__init__()

        # 设置主窗口的标题
        self.setWindowTitle('第一个主窗口应用')

        # 设置窗口的尺寸
        self.resize(400,300)

        self.status = self.statusBar()#实例化一个状态控件

        self.status.showMessage('只存在5秒的消息',5000)#设置存在时间为5秒

if __name__ == '__main__':
    app = QApplication(sys.argv)

    app.setWindowIcon(QIcon('./images/Dragon.ico'))#设置窗体图标
    main = FirstMainWin()
    main.show()

    sys.exit(app.exec_())

(1)__name__=='__main__'的含义是从改程序进入时运行以下代码,这是python的机种,当代码为主程序运行时,此时该程序__name__的值则为'__main__',否则则为它本身的名称。

(2)这边的类 使用的为继承关系,有对__init__进行重写,所以使用super(FirstMainWin,self).__init__()来继承原先类的属性,这是python2版本的写法,python3也可使用super().__init__()

(3)如果使用Jupter等工具进行程序编写的话,请使用 app.exec_() del app进行程序的退出,以免内核断开

 

(2)让窗口居中显示

# QDesktopWidget
import sys
from PyQt5.QtWidgets import QDesktopWidget,QMainWindow,QApplication
from PyQt5.QtGui import QIcon

class CenterForm(QMainWindow):
    def __init__(self):
        super(CenterForm,self).__init__()

        # 设置主窗口的标题
        self.setWindowTitle('让窗口居中')

        # 设置窗口的尺寸
        self.resize(400,300)

    def center(self):#需要实例化调用必须加Self参数
        # 获取屏幕坐标系
        screen = QDesktopWidget().screenGeometry()
        # 获取窗口坐标系
        size = self.geometry()
        newLeft = (screen.width() - size.width()) / 2#Left居中处理
        newTop = (screen.height() - size.height()) / 2#Top居中处理
        self.move(newLeft,newTop)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    main = CenterForm()
    main.show()

    app.exec_()
    del app

需要了解屏幕坐标体系的Y轴方向与平时坐标轴的Y轴方向是相反的

 (3)窗体的基本属性(窗体属性,工作区属性)

import sys
from PyQt5.QtWidgets import QHBoxLayout,QMainWindow,QApplication,QPushButton,QWidget
class QuitApplication(QMainWindow):
    def __init__(self):
        super(QuitApplication,self).__init__()
        mainFrame=QWidget()
#         mainFrame.setLayout(layout)
#         mainFrame.setLayout(self.button1)
        self.setCentralWidget(mainFrame)
        
        self.resize(300,120)
        self.setWindowTitle('退出应用程序')
        
        self.button1=QPushButton('输出属性',mainFrame)
        self.button1.resize(120,50)
        self.button1.move(30,30)
        self.button1.clicked.connect(self.onClick_Button)
        self.initUI()
#         layout=QHBoxLayout()
#         layout.addWidget(self.button1)
        
    def initUI(self):
        self.setWindowIcon(QIcon('3D.ico'))
    
    def onClick_Button(self):
        print('------------------')
        print('窗体横坐标 = %d'%self.x())#窗体横坐标 250
        print('窗体纵坐标 = %d'%self.y())#窗体纵坐标 200
        print('工作区宽度 = %d'%self.width())#工作区宽度 300
        print('工作区高度 = %d'%self.height())#工作区高度 240

        print('------------------')
        print('工作区域横坐标 = %d'%self.geometry().x())#工作区域横坐标 258
        print('工作区域纵坐标 = %d'%self.geometry().y())#工作区域纵坐标 230
        print('工作区域宽度 = %d'%self.geometry().width())#工作区域宽度 300
        print('工作区域高度 = %d'%self.geometry().height())#工作区域高度 240

        print('------------------')
        print('窗体横坐标 = %d'%self.frameGeometry().x())#窗体横坐标 250
        print('窗体纵坐标 = %d'%self.frameGeometry().y())#窗体纵坐标 200
        print('窗体宽度 = %d'%self.frameGeometry().width())#窗体宽度 316
        print('窗体高度 = %d'%self.frameGeometry().height())#窗体高度 278
    
if __name__ == '__main__':
    app = QApplication(sys.argv)
    main = QuitApplication()
    main.show()
    app.exec_()
    del app

 

 (4)设置窗体图标

import sys
from PyQt5.QtWidgets import QMainWindow,QApplication
from PyQt5.QtGui import QIcon

class IconForm(QMainWindow):
    def __init__(self):
        super(IconForm,self).__init__()
        self.initUI()

    def initUI(self):

        self.setGeometry(300,300,250,250)
        # 设置主窗口的标题
        self.setWindowTitle('设置窗口图标')
        # 设置窗口图标
        self.setWindowIcon(QIcon('3D.ico'))


if __name__ == '__main__':
    app = QApplication(sys.argv)
    app.setWindowIcon(QIcon('3D.ico'))
    main = IconForm()
    main.show()
    app.exec_()
    del app

 

  • 11
    点赞
  • 79
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在 Python 中使用 PyQt5 实现多层界面设计可以使用 QStackedWidget 组件。 QStackedWidget 组件是一个容器组件,可以在其中嵌入多个子界面,并通过设置当前层来显示不同的子界面。 使用方法如下: 1. 创建 QStackedWidget 对象 2. 创建多个子界面(QWidget 对象) 3. 将子界面添加到 QStackedWidget 中 4. 设置当前层来显示不同的子界面 下面是一个简单的例子: ```python import sys from PyQt5.QtWidgets import QApplication, QWidget, QStackedWidget, QVBoxLayout class MainWindow(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): # 创建 QStackedWidget 对象 stacked_widget = QStackedWidget() # 创建多个子界面 page1 = QWidget() page2 = QWidget() page3 = QWidget() # 将子界面添加到 QStackedWidget 中 stacked_widget.addWidget(page1) stacked_widget.addWidget(page2) stacked_widget.addWidget(page3) # 设置当前层 stacked_widget.setCurrentIndex(0) # 在窗口中添加 QStackedWidget 并显示 layout = QVBoxLayout() layout.addWidget(stacked_widget) self.setLayout(layout) self.show() if __name__ == '__main__': app = QApplication(sys.argv) window = MainWindow() sys.exit(app.exec_()) ``` 在这个例子中,我们创建了三个子界面(page1、page2、page3)并将它们添加到 QStackedWidget 中,然后设置当前层为第一层,就可以在窗口中显示第一 ### 回答2: 利用PythonPyQt5可以实现多层界面设计,具体步骤如下: 首先,我们需要导入PyQt5库,并创建一个主窗口类。 ```python from PyQt5.QtWidgets import QApplication, QMainWindow class MainWindow(QMainWindow): def __init__(self): super().__init__() # 设置主窗口的标题和大小 self.setWindowTitle("多层界面设计示例") self.setGeometry(100, 100, 300, 200) # 创建一个按钮并添加到主窗口上 button = QPushButton("打开第二层界面", self) button.move(100, 100) ``` 然后,我们需要创建第二层界面。在第一层界面的按钮点击事件中,可以打开第二层界面。 ```python from PyQt5.QtWidgets import QDialog, QLabel class SecondWindow(QDialog): def __init__(self): super().__init__() # 设置第二层界面的标题和大小 self.setWindowTitle("第二层界面") self.setGeometry(200, 200, 300, 200) # 创建一个标签并添加到第二层界面上 label = QLabel("这是第二层界面", self) label.move(100, 100) ``` 最后,我们需要在主程序中实例化主窗口类,并展示界面。 ```python if __name__ == "__main__": import sys # 创建一个应用程序对象 app = QApplication(sys.argv) # 实例化主窗口类 main_window = MainWindow() # 在点击按钮时打开第二层界面 button.clicked.connect(lambda: open_second_window()) def open_second_window(): second_window = SecondWindow() second_window.exec() # 显示主窗口 main_window.show() # 进入主循环 sys.exit(app.exec()) ``` 这样,就实现了通过点击主窗口上的按钮,打开第二层界面的多层界面设计。在主窗口和第二层界面中,我们可以根据需要添加更多的功能和控件。 ### 回答3: 利用PythonPyQt5可以实现多层界面设计PyQt5是一个Python的GUI框架,可以用于创建各种类型的界面。多层界面设计通常包括主界面和子界面的切换,可以通过使用PyQt5的QStackedWidget(堆叠窗口小部件)来实现。 首先,我们需要导入PyQt5库,使用以下代码实现: ```python from PyQt5.QtCore import * from PyQt5.QtWidgets import * from PyQt5.QtGui import * ``` 然后,创建一个继承自QMainWindow的主窗口类,设置主界面的布局和样式。在主界面中添加按钮或其他控件,用于触发显示子界面的事件。 接下来,创建继承自QWidget的子窗口类,用于显示子界面的内容。在子界面中添加所需的控件和布局,根据需求进行设计。 在主窗口类中,我们可以为按钮或其他控件添加信号和槽函数,用于切换显示子界面。在槽函数中,我们可以使用QStackedWidget的setCurrentIndex方法来切换显示的界面。例如: ```python self.stacked_widget.setCurrentIndex(1) # 显示第二个子界面 ``` 添加完所有的子界面后,我们可以将它们添加到QStackedWidget中,使用addWiget方法来进行添加。例如: ```python self.stacked_widget.addWidget(ChildWindow1()) # 添加第一个界面 self.stacked_widget.addWidget(ChildWindow2()) # 添加第二个子界面 ``` 最后,我们需要在主窗口的布局中添加QStackedWidget,并设置好布局和样式。 通过以上步骤,利用PythonPyQt5,我们可以实现多层界面设计。当用户在主界面点击按钮或其他控件时,可以切换显示子界面,以实现不同功能或模块的展示和操作。同时,我们还可以通过设置子界面的布局和样式来满足设计要求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值