最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PyQt5 GUI 開發(fā)的基礎(chǔ)知識(shí)

 更新時(shí)間:2025年07月27日 09:26:53   作者:吐吐搬磚  
Qt是一個(gè)跨平臺(tái)的C++圖形用戶界面開發(fā)框架,支持GUI和非GUI程序開發(fā),本文介紹了使用PyQt5進(jìn)行界面開發(fā)的基礎(chǔ)知識(shí),包括創(chuàng)建簡單窗口、常用控件、窗口屬性設(shè)置以及三種布局方式,感興趣的可以了解一下

簡介

QT的全稱是"Qt Toolkit",是一個(gè)跨平臺(tái)的C++圖形用戶界面應(yīng)用程序開發(fā)框架。
Qt(發(fā)音為"cute")是一個(gè)由Qt Company開發(fā)的跨平臺(tái)應(yīng)用程序開發(fā)框架,最初由挪威公司Trolltech于1991年創(chuàng)建。它主要用于開發(fā)圖形用戶界面(GUI)應(yīng)用程序,但也支持非GUI程序的開發(fā),如控制臺(tái)工具和服務(wù)器。‌‌

第一個(gè)PyQt程序

import sys
from PyQt5.QtWidgets import QApplication, QWidget

if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = QWidget()
    w.setWindowTitle("Hello World")    # 設(shè)置窗口標(biāo)題
    w.show()                           # 展示窗口
    app.exec_()                        # 程序進(jìn)行循環(huán)等待狀態(tài)

最常用的三個(gè)功能模塊

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")    # 設(shè)置窗口標(biāo)題
	btn = QPushButton("按鈕")          # 在窗口里面添加控件-QPushButton
    btn.setParent(w)                   
    w.show()                           # 展示窗口
    app.exec_()                        # 程序進(jìn)行循環(huán)等待狀態(tài)

控件QLable(純文本)

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel

if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = QWidget()
    w.setWindowTitle("Hello World")    # 設(shè)置窗口標(biāo)題
	# lab = QLabel("賬號(hào): ", w)         # 簡寫方式
	lab = QLabel("賬號(hào): ")
    lab.setParent(w)
	lab.setGeometry(20, 20, 300, 300)
    w.show()                           # 展示窗口
    app.exec_()                        # 程序進(jìn)行循環(huán)等待狀態(tài)

控件QLineEdit(文本框)

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLineEdit

if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = QWidget()
    w.setWindowTitle("Hello World")    # 設(shè)置窗口標(biāo)題
	edit = QLineEdit(w)
    edit.setPlaceholderText("請輸入賬號(hào)")
    edit.setGeometry(50, 20, 200, 20)
    w.show()                           # 展示窗口
    app.exec_()                        # 程序進(jìn)行循環(huán)等待狀態(tài)

調(diào)整窗口的大小和位置

w=QWidget()
w.resize(300, 300)    # 設(shè)置窗口大小
w.move(0, 0)          # 移動(dòng)窗口

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()

設(shè)置窗口的圖標(biāo)

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("計(jì)算器")

        edit = QLineEdit()
        edit.setPlaceholderText("請輸入內(nèi)容")
        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("賬號(hào)")
        edit1 = QLineEdit()
        edit1.setPlaceholderText("請輸入賬號(hào)")
        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_()

到此這篇關(guān)于PyQt5 GUI 開發(fā)基礎(chǔ)的文章就介紹到這了,更多相關(guān)PyQt5 GUI 開發(fā)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • django應(yīng)用JWT(JSON?Web?Token)實(shí)戰(zhàn)教程

    django應(yīng)用JWT(JSON?Web?Token)實(shí)戰(zhàn)教程

    在前后端分離的項(xiàng)目中,JWT(JSON?Web?Token)作為一種廣泛使用的身份驗(yàn)證和授權(quán)機(jī)制,提供了一種安全、高效的方式來保護(hù)RESTful?API,本文詳細(xì)介紹了JWT的概念、優(yōu)勢、在Django中的應(yīng)用步驟和使用方法,是構(gòu)建安全、高效Web應(yīng)用的有效指南
    2024-10-10
  • python設(shè)計(jì)微型小說網(wǎng)站(基于Django+Bootstrap框架)

    python設(shè)計(jì)微型小說網(wǎng)站(基于Django+Bootstrap框架)

    這篇文章主要介紹了python設(shè)計(jì)微型小說網(wǎng)站(基于Django+Bootstrap框架),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • 詳解win10下pytorch-gpu安裝以及CUDA詳細(xì)安裝過程

    詳解win10下pytorch-gpu安裝以及CUDA詳細(xì)安裝過程

    這篇文章主要介紹了win10下pytorch-gpu安裝以及CUDA詳細(xì)安裝過程,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • 利用Python自動(dòng)監(jiān)控網(wǎng)站并發(fā)送郵件告警的方法

    利用Python自動(dòng)監(jiān)控網(wǎng)站并發(fā)送郵件告警的方法

    這篇文章介紹的是通過定時(shí)執(zhí)行python腳本,可以實(shí)現(xiàn)定期批量訪問網(wǎng)站,如果發(fā)現(xiàn)網(wǎng)站打不開,第一時(shí)間發(fā)郵件到管理員郵箱進(jìn)行預(yù)警。有需要的可以參考借鑒。
    2016-08-08
  • PyCharm 無法 import pandas 程序卡住的解決方式

    PyCharm 無法 import pandas 程序卡住的解決方式

    這篇文章主要介紹了PyCharm 無法 import pandas 程序卡住的解決方式,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • Python中使用uv創(chuàng)建環(huán)境及原理舉例詳解

    Python中使用uv創(chuàng)建環(huán)境及原理舉例詳解

    uv是Astral團(tuán)隊(duì)開發(fā)的高性能Python工具,整合包管理、虛擬環(huán)境、Python版本控制等功能,這篇文章主要介紹了Python中使用uv創(chuàng)建環(huán)境及原理的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-06-06
  • Python pandas軸旋轉(zhuǎn)stack和unstack的使用說明

    Python pandas軸旋轉(zhuǎn)stack和unstack的使用說明

    這篇文章主要介紹了Python pandas軸旋轉(zhuǎn)stack和unstack的使用說明,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • Python推導(dǎo)表達(dá)式進(jìn)行高效數(shù)據(jù)處理的詳細(xì)方法

    Python推導(dǎo)表達(dá)式進(jìn)行高效數(shù)據(jù)處理的詳細(xì)方法

    在 Python編程中,推導(dǎo)表達(dá)式是一種簡潔且高效的語法結(jié)構(gòu),能夠快速生成列表,字典,集合等數(shù)據(jù)結(jié)構(gòu),下面我們來看看Python如何利用推導(dǎo)表達(dá)式進(jìn)行高效數(shù)據(jù)處理吧
    2025-06-06
  • Django Rest framework三種分頁方式詳解

    Django Rest framework三種分頁方式詳解

    這篇文章主要介紹了Django Rest framework三種分頁方式詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • python爬蟲之自制英漢字典

    python爬蟲之自制英漢字典

    這篇文章主要為大家詳細(xì)介紹了python爬蟲之自制英漢字典的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-06-06

最新評(píng)論

邵武市| 泰宁县| 舒兰市| 突泉县| 同心县| 新蔡县| 嘉兴市| 武胜县| 内丘县| 鄂伦春自治旗| 南充市| 建始县| 西吉县| 兴城市| 瑞安市| 永定县| 扶沟县| 海城市| 集安市| 奇台县| 铜陵市| 临武县| 长丰县| 浦江县| 三河市| 正宁县| 柯坪县| 乐昌市| 盘山县| 沙坪坝区| 册亨县| 石首市| 沙雅县| 博罗县| 塘沽区| 江川县| 石城县| 富源县| 资溪县| 贞丰县| 台北市|