开发者

PyQt5 GUI 开发的基础知识

开发者 https://www.devze.com 2025-07-28 09:16 出处:网络 作者: 吐吐搬砖
目录简介第一个PyQt程序最常用的三个功能模块控件QPushButton(按钮)控件QLable(纯文本)控件QLineEdit(文本框)调整窗口的大小和位置设置窗口的图标布局-QBoxLayout垂直布局-QvboxLayout水平布局-QHBoxLayout布局
目录
  • 简介
  • 第一个PyQt程序
  • 最常用的三个功能模块
  • 控件QPushButton(按钮)
  • 控件QLable(纯文本)
  • 控件QLineEdit(文本框)
  • 调整窗口的大小和位置
  • 设置窗口的图标
  • 布局-QBoxLayout
    • 垂直布局-QvboxLayout
    • 水平布局-QHBoxLayout
  • 布局-QGridLayout
    • 布局-QFormLayout

      简介

      QT的全称是"Qt Toolkit",是一个跨平台的C++图形用户界面应用程序开发框架。

      Qt(发音为"cute")是一个由Qt Company开发的跨平台应用程序开发框架,最初由挪威公司Trolltech于1991年创建。它主要用于开发图形用户界面(GUI)应用程序,但也支持非GUI程序的开发,如控制台工具和服务器。‌‌

      第一个PyQt程序

      import sys
      from PyQt5.QtWidgets import QApplication, QWidget
      
      if __name__ == '__main__':
          app = QApplication(sys.argv)
          w = QWidget()
          w.setWindowTitle("Hello World")    # 设置窗口标题
          w.show()                           # 展示窗口
          app.exec_()                        # 程序进行循环等待状态
      

      最常用的三个功能模块

      QtCore、QtGui、QtWidgets

      控件QPushButton(按钮)

      import sys
      from PyQt5.QtWidgets import QApplication, QWidget, QPushButton
      
      if __name__ javascript== '__main__':
          app = QApplication(sys.argv)
          w = QWidget()
          w.setWindowTitle("Hello World")    # 设置窗口标题
      	btn = QPushButton("按钮")          # 在窗口里面添加控件-QPushButton
          btn.setParent(w)                   
          w.show()                           # 展示窗口
          app.exec_()                        # 程序进行循环等待状态
      

      控件QLable(纯文本)

      import sys
      from PyQt5.QtWidgets import QApplication, QWidget, QLabel
      
      if __name__ == '__main__':
          app = QApplication(sys.argv)
          w = QWidget()
          w.setWindowTitle("Hello World")    # 设置窗口标题
      	# lab = QLabel("账号: ", w)         # 简写方式
      	lab = QLabel("账号: ")
          lab.setParent(w)
      	lab.setGeometry(20, 20, 300, 300)
          w.show()                           # 展示窗口
          app.exec_()                        # 程序进行循环等待状态
      

      控件QLineEdit(文本框)

      import sys
      from PyQt5.QtWidgets import QApplication, QWidget, QLineEdit
      
      if __name__ == '__main__':
          app = QApplication(sys.argv)
          w = QWidget()
          w.setWindowTitle("Hello World")    # 设置窗口标题
      	edit = QLineEdit(w)
          edit.setPlaceholderText("请输入账号")
          edit.setGeoFUVdoyzDimetry(50, 20, 200, 20)
          w.show()                           # 展示窗口
          app.exec_()                        # 程序进行循环等待状态
      

      调整窗口的大小和位置

      w=QWidget()
      w.resize(300, 300)    # 设置窗口大小
      w.move(0, 0)          # 移动窗口
      
      desktop = QDesktopWidget()
      center_point = desktop.availableGeometry().center()
      x = center_point.x()
      y = center_point.y()
      
      print(w.frameGeometry())
      print(w.frameGeometry().getRect())
      old_x, old_y, fg_w, fg_h = w.frameGeometry().getRect()
      

      设置窗口的图标

      w = QWidget()
      w.setWindowTitle("Hello World")
      icon = QIcon("Windows_icon.png")
      w.setWindowIcon(icon)
      

      布局-QBoxLayout

      垂直布局-QVBoxLayout

      import sys
      from PyQt5.QtGui import QIcon
      from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout
      
      class MyWindow(QWidget):
          """"""
          
          def __init__(self):
              """"""
              super().__init__()
      		self.setWindowTitle("垂直布局")
              self.icon = QIcon("windows_ichttp://www.devze.comon.png")
              self.setWindowIcon(self.icon)
              self.resize(500, 400)
      		self.layout = QVBoxLayout()
              self.button_layout()
              self.setLayout(self.layout)
              
      	def button_layout(self):
              """"""
              btn1 = QPushButton("按钮1")
      		self.layout.addwidget(btn1)
              btn2 = QPushButton("按钮2")
              self.layout.addWidget(btn2)
      		btn3 = QPushButton("按钮3")
              self.layout.addWidget(btn3)
              self.layout.addStretch()
              
      if __name__ == '__main__':
          app = QApplication(sys.argv)
      	w = MyWindow()
          w.show()
          app.exec_()
      

      水平布局-QHBoxLayout

      """"""
      
      import sys
      from PyQt5.QtWidgets import (
          QApplication,
          QWidget,
          QRadioButton,
          QVBoxLayout,
          QHBoxLayout,
          QGroupBox,
      )
      
      class MyWindow(QWidget):
          """"""
      
          def __init__(self):
              """"""
              super().__init__()
              self.setWindowTitle("Hello World")
              self.setup()
      
          def setup(self):
              """"""
              hobby_box = self.generate_hobby_group_box()
              gender_box = self.generate_gender_group_box()
              container = QVBoxLayout()
              container.addWidget(hobby_box)
              container.addWidget(gender_box)
              self.setLayout(container)
      
          @staticmethod
          def generate_hobby_group_box():
              """"""
              hobby_box = QGroupBox("爱好")
              hobby_layout = QVBoxLayout()
              btn1 = QRadioButton("抽烟")
              btn2 = QRadioButton("打牌")
              hobby_layout.addWidget(btn1)
              hobby_layout.addWidget(btn2)
              hobby_box.setLayout(hobby_layout)
      
              return hobby_box
      
          @staticmethod
          def generate_gender_group_box():
              """"""
              gender_box = QGroupBox("性别")
              gender_layout = QHBoxLayout()
              btn1 = QRadioButton("男")
              btn2 = QRadioButton("女")
              gender_layout.addWidget(btn1)
              gender_layout.addWidget(btn2)
              gender_box.setLayout(gender_layout)
      
              return gender_box
      
      if __name__ == '__main__':
          app = QApplication(sys.argv)
          w = MyWindow()
          w.show()
          app.exec_()
      

      布局-QGridLayout

      import sys
      from PyQt5.QtWidgets import (
      	QApplication,
      	QWidget,
      	QLineEdit,
      	QVBoxLayout,
      	QGridLayout,
      	QPushButton,
      )
      
      class MyWindow(QWidget):
          """"""
      
          def __init__(self):
              """"""
              super().__init__()
              self.setup()
      
          def setup(self):
              """"""
              self.set编程WindowTitle("计算器")
      
              edit = QLineEdit()
              edit.setPlaceholderText("请输入内容")
              edit.setParent(self)
      
              grid_layout = self.generate_grid_layout()
      
              container = QVBoxLayout()
              container.addWidget(edit)
              container.addLayout(grid_layout)
      
              self.setLayout(container)
      
          @staticmethod
          def generate_grid_layout():
              """"""
              data = {
                  0: ["%", "CE", "C", "<-"],
                  1: ["7", "8", "9", "/"],
                  2: ["4", "5", "6", "x"],
                  3: ["1", "2", "3", "-"],
                  4: ["0", ".", "=", "+"],
              }
      
              grid_layout = QGridLayout()
              for row, row_values in data.items():
                  for col, value in enumerate(row_values):
                      btn = QPushButton(value)
                      grid_layout.addWidget(btn, row, col)
      
              return grid_layout
      
      if __name__ == '__main__':
          app = QApplication(sys.argv)
          w = MyWindow()
          w.show()
          app.exec_()
      

      布局-QFormLayout

      import sys
      from PyQt5.QtWidgets import (
      	QApplication,
      	QWidget,
      	QVBoxLayout,
      	QFormLayout,
      	QPushButton,
      	QLineEdit,
      	QLabel,
      )
      
      class MyWindow(QWidget):
          """"""
      
          def __init__(self):
              """"""
              super().__init__()
              self.setWindowTitle("Hello World")
      
              form_layout = QFormLayout()
              lab1 = QLabel("账号")
              edit1 = QLineEdit()
              edit1.setPlaceholderText("请输入账号")
              lab2 python= QLabel("密码")
              edit2 = QLineEdit()
              edit2.setPlaceholderText("请输入密码")
              form_layout.addRow(lab1, edit1)
              form_layout.addRow(lab2, edit2)
      
              btn = QPushButton("登录")
      
              container = QVBoxLayout()
              container.addLayout(form_layout)
              container.addWidget(btn)
      
              self.setLayout(container)
      
      if __name__ == '__main__':
          app = QApplication(sys.argv)
          w = MyWindow()
          w.show()
          app.exec_()
      

      到此这篇关于PyQt5 GUI 开发基础的文章就介绍到这了,更多相关PyQt5 GUI 开发内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

      0

      精彩评论

      暂无评论...
      验证码 换一张
      取 消

      关注公众号