当前位置: 代码网 > it编程>编程语言>C/C++ > PyQt5 GUI 开发的基础知识

PyQt5 GUI 开发的基础知识

2025年07月27日 C/C++ 我要评论
简介qt的全称是"qt toolkit",是一个跨平台的c++图形用户界面应用程序开发框架。qt(发音为"cute")是一个由qt company开发的跨平台应

简介

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__ == '__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.setgeometry(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_icon.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.setwindowtitle("计算器")

        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 = 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 开发内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com