日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

pyqt 界面关闭信号_木辛老师的编程课堂之Python和Qt实战慕课软件开发:增加关闭按钮...

發布時間:2023/12/9 python 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pyqt 界面关闭信号_木辛老师的编程课堂之Python和Qt实战慕课软件开发:增加关闭按钮... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

軟件實戰開始,快速提供編程能力;通過實戰,分析產品需求,梳理設計需求,提升項目分析和架構的能力。快點跟著木辛老師一起學習吧!
請點擊右上角“關注”按鈕關注我們喲:跟著木辛老師學習Python編程知識,變身快樂的編程達人吧~

上節課的時候,留了一個小尾巴,不知道大家這幾天有沒有思考過這個問題呢?

“將主窗口的標題欄隱藏之后,發現無法關閉窗口。這應該怎么解決?”

那么,在這一節課里,我們就講一下通過編碼的方式,調用系統方法,將窗口順利的關閉。

目前的登錄頁面還沒有制作完畢,還需要繼續使用登錄頁面的設計稿。

登錄界面設計稿

如果大家需要復習一下信號和槽的知識,可以參考一下木辛老師之前的一篇教程,傳送門:《木辛老師的編程課堂:Python和Qt之頁面布局實戰篇(2)》。

增加關閉按鈕

我們需要先按照設計稿的要求,在主窗口中添加一個關閉按鈕:“x”。

將關閉按鈕的素材圖片拷貝到當前項目的images目錄下,姑且名字就叫做:

close_windows.png

打開Qt Designer開發工具,在彈出的對話框中點擊“打開”按鈕,選擇構建登錄頁面的.ui文件,在這里是“LoginMainWin.ui”;

雙擊打開,或者單擊選中這個文件之后,點擊右下角的“打開”按鈕。

打開登錄界面文件

成功打開之后,大家就可以看到之前尚未完成的登錄頁面。

拖拽左側Buttons區的QPushButton到主窗口,并按照設計稿將這個按鈕放置在560px x 10px的位置。

通過右側的屬性編輯窗口,修改geometry屬性,將這個控件的X、Y、寬度和高度分別修改為:560、10、25、20。

起個名字

在之前的課程里,并沒有提到這個關閉按鈕,所以,這個關閉按鈕目前還沒名沒姓,屬于一個黑戶!

那咱們給他起一個名字吧,按照之前的規定,這個關閉按鈕就叫它:

btn_close_window

同時,一定要修改這個控件的objectName屬性喲,否則無法通過btn_close_window這個名字找到這個控件。

具體方法就是:選中這個控件,在屬性編輯窗口中修改QObject中的objectName字段,將這個字段的值修改為btn_close_window就可以了。

好了,目前位置我們已經將關閉按鈕添加好了,保存程序;進入PyCharm軟件,右鍵點擊LoginMainWin.ui文件,在彈出來的菜單中選擇“External Tools”中的“PyUIC”插件,將.ui文件轉換為.py文件。

轉換.ui文件為.py文件

此時,打開LoginMainWin.py文件,咱們一起看看代碼有沒有更新吧。

查看python文件的變化

可以看到,代碼中出現了剛才添加的QPushButton控件,并通過對象的setGeometry方法,將對應的屬性成功傳遞。

按鈕加載圖片

接下來,需要將關閉按鈕的圖像放置上去了。

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

我們通過實例化了一個QPixmap對象,加載了關閉按鈕的圖片文件,通過使用QPushButton的setIcon方法,將這個pixmap設置為QPushButton上的一個小圖標,同時還將圖標尺寸設置為10x10px,這樣看起來更美觀一些。

增加關閉按鈕之后的效果

看著挺不錯的,(#^.^#)。

好了,已經添加完關閉按鈕了,咱們這個頁面又做完一個新功能,收工吧。

咦······,怎么還是沒法關閉這個窗口呀!

這是怎么回事啊,已經將關閉按鈕添加上去了,為什么還不能關閉呢?

是這樣的,我們僅僅是將按鈕放置到了主窗口上,并沒有給它添加事件;也就是說,在我們點擊了按鈕之后,它并不知道要做什么,所以,只能呆呆的沒有反應。

教程開始的時候,提到過需要先復習一下“信號和槽”的相關知識,在這里就需要用到了。

添加事件

我們需要給關閉按鈕添加事件,讓按鈕作為一個事件發起者,發送出一個關閉信號。

這個事件在什么情況下發生呢?

當我們點擊關閉按鈕的時候,需要通知系統:我們想要關閉當前主窗口,請快快把主窗口關閉吧!

具體代碼可以這么寫:

self.btn_close_window.clicked.connect(self.close)

調用QPushButton的clicked方法,并通過其connect,將這個信號發送給系統的close方法,完成關閉主窗口的操作。

邏輯就是這么簡單的!

咱們重新梳理下流程哈

  • 在這里的定義關閉按鈕是信號發出者
  • 當點擊關閉按鈕之后,會發射一個信號
  • 通過connect方法,將這個按鈕的電機事件連接到了主窗口的關閉事件上
  • 接收者窗體在接收到關閉信號之后,將運行槽函數close(),將主窗口關閉。
  • 這么一講,大家是不是就能理解信號和槽機制的運行機理了呢?

    好了,咱們的關閉按鈕完工咯!

    不對!發現一個問題,這個關閉按鈕四周有一個邊框呢,這個在設計稿里可以沒有的。咱們需要想想辦法把這個邊框去掉吧。

    這樣吧,今天咱們就把這個問題留作一個思考問題,請大家想想:如何去掉按鈕的邊框吧。

    下一節課中,我們會引入一個新的概念,實現去掉按鈕的邊框。

    請持續關注木辛老師的編程課喲,后續更多精彩陸續到來!

    快樂編程,快樂成長!

    總結

    以上是生活随笔為你收集整理的pyqt 界面关闭信号_木辛老师的编程课堂之Python和Qt实战慕课软件开发:增加关闭按钮...的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。