這篇文章給大家介紹怎么理解基礎窗口控件QWidget,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
?? 本來這一篇是想寫一下怎么使用Qt Designer去設計一個界面的,但是我現在通常都是用代碼去直接寫界面很少用設計器。因為Qt Designer并不是為了python而寫的,所以用起來不是很方便。很多初學者可能都比較喜歡使用Qt Designer,因為所見即所得,我以前做MFC開發的時候也是一直用界面設計器,主要是VS的功能非常強大,而且界面設計和代碼編寫都是使用這個IDE,契合非常完美。但是Qt Designer就一樣了。另外一點就是因為你對PyQt5的布局管理器的使用不熟悉,如果你學會了布局管理器的使用,那這些控件的布局其實非常簡單。他并不是你所想象的用代碼去按像素調整窗口,PyQt5的布局管理器是根據左右布局、上下布局或者柵格布局自動幫你調整到對應的位置,你只需要進行一些微調就可以了。我們在網上搜到的很多代碼都是直接去設置控件的絕對位置,這樣就誤導了很多人。PyQt5的布局管理器是非常好用的,它可以幫我們把大概的布局很簡單的就設計好。所以后期我的教程會盡量使用布局管理器。同時在使用的地方也會加上一些注釋,這樣大家代碼看得多了以后就會對布局管理器有一些了解。
?? 一個程序可以擁有多個窗口,每個窗口都會承載多個控件。所有的窗口和控件都是直接或者間接的繼承自QWidget類。
??就像大多數GUI系統一樣,PyQt5使用的坐標系統也是以左上角為原點(0, 0)。
import sys
from PyQt5.QtWidgets import QApplication, QWidget
app = QApplication(sys.argv)
widget = QWidget()
widget.setGeometry(300, 300, 500, 500)
widget.setWindowTitle("我是主窗口控件")
w1 = QWidget(widget)
w1.setGeometry(100, 100, 200, 200)
w1.setWindowTitle("我是子控件")
w1.setStyleSheet("background-color:blue")
widget.show()
sys.exit(app.exec_())
QWidget直接提供的成員函數:x(), y()獲得窗口左上角的坐標,width(), height()獲取窗口的寬度和高度。
QWidget的geometry()提供的成員函數:x(),y()獲取窗口左上角坐標,width(), height()獲取窗口的寬度和高度。
QWidget的frameGeometry()提供的成員函數:x(),y()獲取窗口左上角坐標,width(), height()獲取窗口的寬度和高度。
QWidget有兩種幾何結構。
不包含外邊框。
包含外邊框。
對于主窗口控件,不包含邊框的部分就是客戶區,我們可以在其中添加子控件。
客戶區的大小是一個QRect類。要改變窗口的大小,可以使用如下函數:
修改窗口大小
QWidget.resize(width, height)
Qwidget.resize(QSize)
2.獲取窗口大小
QWidget.size()
3.獲取窗口的寬和高
QWidget.width()
QWidget.height()
4.設置窗口的高度和寬度
QWidget.setFixedWidth(width)
QWidget.setFixedHeight(height)
QWidget.setFixedSize(QSize)
QWidget.setFixedSize(width, height)
設置固定寬度和高度,設置以后,窗口的大小不能改變。
QWidget.setGeometry(x, y, width, height)
QWidget.setGeometry(QRect)
同時設置窗口的位置和大小
QWidget包含邊框是窗口在整個屏幕上顯示的整個區域。
獲取窗口的位置和大小
QWidget.frameGeometry()
2.設置窗口的位置
QWidget.move(x, y)
QWidget.move(QPoint)
3.獲得窗口左上角坐標
QWidget.pos()
下面再來一個例子結束今天的文章:
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton
if __name__ == "__main__":
app = QApplication(sys.argv)
main_widget = QWidget()
main_widget.setWindowTitle("我是主窗口控件")
# 相當于main_widget.setGeometry(300, 300, 500, 500)
main_widget.resize(500, 500)
main_widget.move(300, 300)
# QPushButton(main_widget)的意思是將btn作為main_widget的子控件,這樣在移動位置時才會以父控件為參照
btn = QPushButton(main_widget)
btn.setText("我是按鈕")
btn.setFixedSize(100, 30)
btn.move(100, 100)
# 打印一下位置信息
print("main_widget")
print("x=%d, y=%d" % (main_widget.x(), main_widget.y()))
print("width=%d, height=%d" % (main_widget.width(), main_widget.height()))
print("geometry")
print("x=%d, y=%d" % (main_widget.geometry().x(), main_widget.geometry().y()))
print("width=%d, height=%d" % (main_widget.geometry().width(), main_widget.geometry().height()))
print("frameGeometry")
print("x=%d, y=%d" % (main_widget.frameGeometry().x(), main_widget.frameGeometry().y()))
print("width=%d, height=%d" % (main_widget.frameGeometry().width(), main_widget.frameGeometry().height()))
main_widget.show()
sys.exit(app.exec_())
關于怎么理解基礎窗口控件QWidget就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。