pyqt 界面关闭信号_木辛老师的编程课堂之Python和Qt实战慕课软件开发:增加关闭按钮...
請(qǐng)點(diǎn)擊右上角“關(guān)注”按鈕關(guān)注我們喲:跟著木辛老師學(xué)習(xí)Python編程知識(shí),變身快樂(lè)的編程達(dá)人吧~
上節(jié)課的時(shí)候,留了一個(gè)小尾巴,不知道大家這幾天有沒(méi)有思考過(guò)這個(gè)問(wèn)題呢?
“將主窗口的標(biāo)題欄隱藏之后,發(fā)現(xiàn)無(wú)法關(guān)閉窗口。這應(yīng)該怎么解決?”
那么,在這一節(jié)課里,我們就講一下通過(guò)編碼的方式,調(diào)用系統(tǒng)方法,將窗口順利的關(guān)閉。
目前的登錄頁(yè)面還沒(méi)有制作完畢,還需要繼續(xù)使用登錄頁(yè)面的設(shè)計(jì)稿。
登錄界面設(shè)計(jì)稿
如果大家需要復(fù)習(xí)一下信號(hào)和槽的知識(shí),可以參考一下木辛老師之前的一篇教程,傳送門:《木辛老師的編程課堂:Python和Qt之頁(yè)面布局實(shí)戰(zhàn)篇(2)》。
增加關(guān)閉按鈕
我們需要先按照設(shè)計(jì)稿的要求,在主窗口中添加一個(gè)關(guān)閉按鈕:“x”。
將關(guān)閉按鈕的素材圖片拷貝到當(dāng)前項(xiàng)目的images目錄下,姑且名字就叫做:
close_windows.png打開(kāi)Qt Designer開(kāi)發(fā)工具,在彈出的對(duì)話框中點(diǎn)擊“打開(kāi)”按鈕,選擇構(gòu)建登錄頁(yè)面的.ui文件,在這里是“LoginMainWin.ui”;
雙擊打開(kāi),或者單擊選中這個(gè)文件之后,點(diǎn)擊右下角的“打開(kāi)”按鈕。
打開(kāi)登錄界面文件
成功打開(kāi)之后,大家就可以看到之前尚未完成的登錄頁(yè)面。
拖拽左側(cè)Buttons區(qū)的QPushButton到主窗口,并按照設(shè)計(jì)稿將這個(gè)按鈕放置在560px x 10px的位置。
通過(guò)右側(cè)的屬性編輯窗口,修改geometry屬性,將這個(gè)控件的X、Y、寬度和高度分別修改為:560、10、25、20。
起個(gè)名字
在之前的課程里,并沒(méi)有提到這個(gè)關(guān)閉按鈕,所以,這個(gè)關(guān)閉按鈕目前還沒(méi)名沒(méi)姓,屬于一個(gè)黑戶!
那咱們給他起一個(gè)名字吧,按照之前的規(guī)定,這個(gè)關(guān)閉按鈕就叫它:
btn_close_window同時(shí),一定要修改這個(gè)控件的objectName屬性喲,否則無(wú)法通過(guò)btn_close_window這個(gè)名字找到這個(gè)控件。
具體方法就是:選中這個(gè)控件,在屬性編輯窗口中修改QObject中的objectName字段,將這個(gè)字段的值修改為btn_close_window就可以了。
好了,目前位置我們已經(jīng)將關(guān)閉按鈕添加好了,保存程序;進(jìn)入PyCharm軟件,右鍵點(diǎn)擊LoginMainWin.ui文件,在彈出來(lái)的菜單中選擇“External Tools”中的“PyUIC”插件,將.ui文件轉(zhuǎn)換為.py文件。
轉(zhuǎn)換.ui文件為.py文件
此時(shí),打開(kāi)LoginMainWin.py文件,咱們一起看看代碼有沒(méi)有更新吧。
查看python文件的變化
可以看到,代碼中出現(xiàn)了剛才添加的QPushButton控件,并通過(guò)對(duì)象的setGeometry方法,將對(duì)應(yīng)的屬性成功傳遞。
按鈕加載圖片
接下來(lái),需要將關(guān)閉按鈕的圖像放置上去了。
pixmap = QtGui.QPixmap(QtGui.QImage('images/close_windows.png')) self.btn_close_window.setIcon(QtGui.QIcon(pixmap)) self.btn_close_window.setIconSize(QSize(10, 10))我們通過(guò)實(shí)例化了一個(gè)QPixmap對(duì)象,加載了關(guān)閉按鈕的圖片文件,通過(guò)使用QPushButton的setIcon方法,將這個(gè)pixmap設(shè)置為QPushButton上的一個(gè)小圖標(biāo),同時(shí)還將圖標(biāo)尺寸設(shè)置為10x10px,這樣看起來(lái)更美觀一些。
增加關(guān)閉按鈕之后的效果
看著挺不錯(cuò)的,(#^.^#)。
好了,已經(jīng)添加完關(guān)閉按鈕了,咱們這個(gè)頁(yè)面又做完一個(gè)新功能,收工吧。
咦······,怎么還是沒(méi)法關(guān)閉這個(gè)窗口呀!
這是怎么回事啊,已經(jīng)將關(guān)閉按鈕添加上去了,為什么還不能關(guān)閉呢?
是這樣的,我們僅僅是將按鈕放置到了主窗口上,并沒(méi)有給它添加事件;也就是說(shuō),在我們點(diǎn)擊了按鈕之后,它并不知道要做什么,所以,只能呆呆的沒(méi)有反應(yīng)。
教程開(kāi)始的時(shí)候,提到過(guò)需要先復(fù)習(xí)一下“信號(hào)和槽”的相關(guān)知識(shí),在這里就需要用到了。
添加事件
我們需要給關(guān)閉按鈕添加事件,讓按鈕作為一個(gè)事件發(fā)起者,發(fā)送出一個(gè)關(guān)閉信號(hào)。
這個(gè)事件在什么情況下發(fā)生呢?
當(dāng)我們點(diǎn)擊關(guān)閉按鈕的時(shí)候,需要通知系統(tǒng):我們想要關(guān)閉當(dāng)前主窗口,請(qǐng)快快把主窗口關(guān)閉吧!
具體代碼可以這么寫(xiě):
self.btn_close_window.clicked.connect(self.close)調(diào)用QPushButton的clicked方法,并通過(guò)其connect,將這個(gè)信號(hào)發(fā)送給系統(tǒng)的close方法,完成關(guān)閉主窗口的操作。
邏輯就是這么簡(jiǎn)單的!
咱們重新梳理下流程哈
這么一講,大家是不是就能理解信號(hào)和槽機(jī)制的運(yùn)行機(jī)理了呢?
好了,咱們的關(guān)閉按鈕完工咯!
不對(duì)!發(fā)現(xiàn)一個(gè)問(wèn)題,這個(gè)關(guān)閉按鈕四周有一個(gè)邊框呢,這個(gè)在設(shè)計(jì)稿里可以沒(méi)有的。咱們需要想想辦法把這個(gè)邊框去掉吧。
這樣吧,今天咱們就把這個(gè)問(wèn)題留作一個(gè)思考問(wèn)題,請(qǐng)大家想想:如何去掉按鈕的邊框吧。
下一節(jié)課中,我們會(huì)引入一個(gè)新的概念,實(shí)現(xiàn)去掉按鈕的邊框。
請(qǐng)持續(xù)關(guān)注木辛老師的編程課喲,后續(xù)更多精彩陸續(xù)到來(lái)!
快樂(lè)編程,快樂(lè)成長(zhǎng)!
總結(jié)
以上是生活随笔為你收集整理的pyqt 界面关闭信号_木辛老师的编程课堂之Python和Qt实战慕课软件开发:增加关闭按钮...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 关于DNF的多媒体包NPK文件的那些事儿
- 下一篇: python学生管理系统gui版好例子网