python 读取鼠标选中文本_木辛老师的编程课堂:Python和Qt之页面布局实战篇(一)...
但是僅僅掌握這些知識(shí)還是遠(yuǎn)遠(yuǎn)不夠的;
高深的程序技能是通過(guò)不斷的練習(xí),反復(fù)的試錯(cuò)才能掌握的一門(mén)簡(jiǎn)單,但是高深的武功。所以,今天我們就專(zhuān)門(mén)講一節(jié)實(shí)戰(zhàn)課程,總結(jié)一下有關(guān)Qt Designer的一些知識(shí)。
請(qǐng)點(diǎn)擊右上角“關(guān)注”按鈕關(guān)注我們喲:跟著木辛老師學(xué)習(xí)Python編程知識(shí),變身快樂(lè)的編程達(dá)人吧~
讓我們通過(guò)實(shí)戰(zhàn),來(lái)進(jìn)一步鞏固學(xué)過(guò)的知識(shí)吧。
打開(kāi)Qt Designer,新建一個(gè)主窗口(Main Window),然后從左側(cè)的Buttons欄拖拽一個(gè)QPushButton到主窗口中,并將按鈕的顯示標(biāo)簽修改為“計(jì)算”
添加按鈕修改按鈕顯示文本的方法有兩個(gè)
然后,我們來(lái)看一下如何放置這個(gè)按鈕,即這個(gè)按鈕的尺寸和位置
調(diào)整按鈕位置和大小尺寸我們通過(guò)屬性編輯窗口中的“geometry”的字段,依次修改對(duì)應(yīng)的值
咱們?cè)賮?lái)看一下轉(zhuǎn)換成Python代碼后的樣子
self.pushButton = QtWidgets.QPushButton(self.centralwidget) self.pushButton.setGeometry(QtCore.QRect(370, 170, 131, 41)) self.pushButton.setObjectName("pushButton")可以看到我們實(shí)例化了一個(gè)QPushButton轉(zhuǎn)換,通過(guò)setGeometry方法設(shè)置了它的geometry屬性,并且傳入了X=370 Y=170 width=131 height=41的參數(shù);
這樣,就實(shí)現(xiàn)了和Qt Designer相同的效果,而這個(gè)轉(zhuǎn)換后的python文件,就可以被其他的Python函數(shù)調(diào)用了。
我們來(lái)多放幾個(gè)控件,嘗試著做一個(gè)好玩的小玩具吧
放置多個(gè)控件我們?cè)谄渲刑砑恿艘恍┛丶?#xff1a;
從Display Widgets中,拖拽了6個(gè)QLabel分別命名為“一月”,“二月”,“三月”,“四月”,“收入”,“支出”;
從Input Widgets中,拖拽了8個(gè)Double Spin Box控件,并作為主要數(shù)據(jù)的輸入框;
咱們?cè)賮?lái)看看對(duì)應(yīng)的Python代碼會(huì)是什么樣子吧
Python代碼紅框中的代碼
(第29行)
self.label_2 = QtWidgets.QLabel(self.centralwidget)實(shí)例話(huà)了一個(gè)QLabel,并起名為label_2;
(第30行)
self.label_2.setGeometry(QtCore.QRect(180, 100, 81, 41))設(shè)置了這個(gè)控件的絕對(duì)位置為180,100,81,41;
為了大伙能更清楚的看清楚細(xì)節(jié),我們將字體調(diào)大了一些,這里我設(shè)置了字體大小為24
通過(guò)代碼,我們可以看到
font = QtGui.QFont() font.setPointSize(24) self.label_2.setFont(font)首先實(shí)例化了一個(gè)字體實(shí)例font,設(shè)置字體屬性為24,將這個(gè)字體實(shí)例傳入label_2的setFont方法中,就完成了設(shè)置label_2字體大小的操作。
之后的代碼就類(lèi)似了:實(shí)例化控件,設(shè)置字體大小,設(shè)置控件絕對(duì)位置。
所謂的絕對(duì)位置,是說(shuō)控件所處于主窗口的x和y的坐標(biāo),不論主窗口的怎么改變,控件的位置都不會(huì)改變。
那有沒(méi)有更加靈活的布局方式,在改變窗口大小的時(shí)候,控件會(huì)自動(dòng)調(diào)整位置呢?
使用布局管理器布局
我們使用絕對(duì)坐標(biāo)和大小的方式布局,每次都需要手動(dòng)修改位置,比較麻煩;而且有時(shí)候窗口大小變化了,控件并不能自己調(diào)整大小。
接下來(lái),我們將會(huì)使用布局管理器學(xué)習(xí)和設(shè)計(jì)布局
咱們?cè)谶M(jìn)行下一步操作之前呢,需要先使用一個(gè)小技巧,使我們的布局更合理
在左側(cè)的QLabel控件的上方添加一個(gè)Qlabel控件,顯示文本置為空,為什么要這么做呢?請(qǐng)看木辛老師接下來(lái)的講解吧~
垂直布局
咱們選擇左側(cè)的4個(gè)QLabel控件(包含后來(lái)添加的空的QLabel),點(diǎn)擊鼠標(biāo)右鍵,在彈出的菜單中選擇“布局” —> “垂直布局”,大家看看效果,這“3”個(gè)控件(有一個(gè)“看不見(jiàn)”的控件)是不是都在縱向?qū)R了呀?
是的,選擇垂直布局之后,所選擇的控件會(huì)以左邊為基礎(chǔ),在縱向方向上對(duì)齊。
我們看一下轉(zhuǎn)換后的Python代碼是怎樣的:
垂直布局代碼是不是很清晰呀?
首先,會(huì)實(shí)例化一個(gè)QVBoxLayout類(lèi),木辛老師也給大家講過(guò),水平布局的實(shí)例化方法(傳送門(mén):《木辛老師的編程課堂:Python和Qt第2講之布局管理初探(三)》);
然后,咱們創(chuàng)建的多個(gè)QLabel會(huì)被添加入這個(gè)垂直布局中;這樣,系統(tǒng)就會(huì)將包含的多有控件在垂直方向自動(dòng)左對(duì)齊了;
大家有沒(méi)有注意到:在屬性編輯器中,geometry屬性變成了灰色不可用,這說(shuō)明這些控件的位置和大小已經(jīng)由垂直布局管理器接管,與geometry無(wú)關(guān)了。
屬性編輯器網(wǎng)格布局
接下來(lái),我們選中中間的10個(gè)輸入框控件,點(diǎn)擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇“布局” —>“柵格布局”,看看效果。
使用柵格布局柵格布局的意思就是該布局管理器的窗口呈網(wǎng)格狀排列。本來(lái)這8個(gè)零散的窗口控件就是要呈網(wǎng)格狀排列,因此使用柵格布局管理器正好合適。
咱們看一下轉(zhuǎn)換成Python代碼轉(zhuǎn)換的效果吧
Python代碼轉(zhuǎn)換通過(guò)這個(gè)源代碼,可以看出:只要實(shí)例化QGridLayout對(duì)象,就可以生成一個(gè)grid layout一個(gè)對(duì)象,將對(duì)應(yīng)控件加入到這個(gè)布局管理器中,就可以將布局控制權(quán)交出給管理器了。
水平布局
從Qt Designer的左側(cè)的Spacers欄分別將Horizontal Spacer和Vertical Spacer窗口控件拖拽到主窗口中,從Display Widgets欄將Horizontal Line窗口控件拖拽到主窗口中,之后選擇當(dāng)前主窗口中所有控件,點(diǎn)擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇“布局” —>“水平布局”,看看效果。
使用水平布局我們通過(guò)Qt Designer的菜單欄中“窗體”中的預(yù)覽選項(xiàng),或者使用快捷鍵command+R既可以盡心預(yù)覽效果,非常方便喲!
使用預(yù)覽查看學(xué)習(xí)了這么多布局管理器對(duì)窗體進(jìn)行布局,大家已經(jīng)是不是已經(jīng)熟悉了布局的基礎(chǔ)操作了呀?
也許經(jīng)過(guò)多次的布局修改和調(diào)整,咱們的界面已經(jīng)非常亂了,針對(duì)這種情況,Qt Designer提供了一個(gè)解決方法徹底修改布局:鼠標(biāo)右鍵單擊已存在的布局,在彈出的快捷菜單中選擇“布局” —>“打破布局”。
好了,今天咱們就先講到這里吧。
請(qǐng)持續(xù)關(guān)注木辛老師的編程課喲,后續(xù)更多精彩陸續(xù)到來(lái)!
快樂(lè)編程,快樂(lè)成長(zhǎng)!
總結(jié)
以上是生活随笔為你收集整理的python 读取鼠标选中文本_木辛老师的编程课堂:Python和Qt之页面布局实战篇(一)...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python制作gif动画_实用的Pyt
- 下一篇: cuda 9.0 安装torch 0.4