'木辛老師的編程課堂:Python和Qt之頁面佈局實戰篇(2)'

Qt Python 設計 PyCharm 通信 木辛老師帶你玩轉編程 2019-07-26
"

我們學習了通過水平佈局、垂直佈局、柵格佈局等進行UI頁面的設計實現的知識,這一節裡邊,我們要給這些美觀的控件添加一些動作。

請點擊右上角“關注”按鈕關注我們喲:跟著木辛老師學習Python編程知識,變身快樂的編程達人吧~

讓我們通過實戰,來進一步鞏固學過的知識吧。

信號和槽關聯

信號(signal)和槽(slot)是Qt的核心機制。

在創建事件循環之後,通過建立信號和槽的連接就可以實現對象之間的通信。當信號發射的時候,與之關聯的槽函數將會自動執行。

所有從QObject或者子類派生的類都能夠包含信號和槽。當對象改變狀態時,信號就由該對象發射出去。

槽是用來接收信號的普通的函數;多個信號可以與單個的槽進行連接,單個信號也可以與多個槽進行連接。

由此組建成了一個強大的控件編程機制。

控件發射信號到指定的處理槽函數,一般有以下幾種方法:

  1. 在窗口UI設計中操作添加信號和槽
  2. 通過代碼連接信號和槽

淺嘗輒止

Qt Designer提供了基本的編輯信號和槽的方法。讓咱們通過一個例子來試一試吧。

我們做一個例子,這個例子呢,主要實現一個功能:當點擊關閉按鈕之後,關閉主窗口。

打開Qt Designer工具,創建一個主窗口(Main Window)。在左側Buttons欄中選中QPushButton,拖拽到主窗口中。

並將顯示文本更改為:關閉窗口。為了大家能更清晰的看到細節,木辛老師調整了以下按鈕的尺寸和顯示文本的大小。

"

我們學習了通過水平佈局、垂直佈局、柵格佈局等進行UI頁面的設計實現的知識,這一節裡邊,我們要給這些美觀的控件添加一些動作。

請點擊右上角“關注”按鈕關注我們喲:跟著木辛老師學習Python編程知識,變身快樂的編程達人吧~

讓我們通過實戰,來進一步鞏固學過的知識吧。

信號和槽關聯

信號(signal)和槽(slot)是Qt的核心機制。

在創建事件循環之後,通過建立信號和槽的連接就可以實現對象之間的通信。當信號發射的時候,與之關聯的槽函數將會自動執行。

所有從QObject或者子類派生的類都能夠包含信號和槽。當對象改變狀態時,信號就由該對象發射出去。

槽是用來接收信號的普通的函數;多個信號可以與單個的槽進行連接,單個信號也可以與多個槽進行連接。

由此組建成了一個強大的控件編程機制。

控件發射信號到指定的處理槽函數,一般有以下幾種方法:

  1. 在窗口UI設計中操作添加信號和槽
  2. 通過代碼連接信號和槽

淺嘗輒止

Qt Designer提供了基本的編輯信號和槽的方法。讓咱們通過一個例子來試一試吧。

我們做一個例子,這個例子呢,主要實現一個功能:當點擊關閉按鈕之後,關閉主窗口。

打開Qt Designer工具,創建一個主窗口(Main Window)。在左側Buttons欄中選中QPushButton,拖拽到主窗口中。

並將顯示文本更改為:關閉窗口。為了大家能更清晰的看到細節,木辛老師調整了以下按鈕的尺寸和顯示文本的大小。

木辛老師的編程課堂:Python和Qt之頁面佈局實戰篇(2)

放置按鈕到主窗口

接下來,我們需要打開“信號和槽編輯器”。

點擊頂部菜單中的“視圖”,然後選擇“信號/槽編輯器”,打開信號和槽編輯器。效果如下圖⬇️⬇️⬇️

"

我們學習了通過水平佈局、垂直佈局、柵格佈局等進行UI頁面的設計實現的知識,這一節裡邊,我們要給這些美觀的控件添加一些動作。

請點擊右上角“關注”按鈕關注我們喲:跟著木辛老師學習Python編程知識,變身快樂的編程達人吧~

讓我們通過實戰,來進一步鞏固學過的知識吧。

信號和槽關聯

信號(signal)和槽(slot)是Qt的核心機制。

在創建事件循環之後,通過建立信號和槽的連接就可以實現對象之間的通信。當信號發射的時候,與之關聯的槽函數將會自動執行。

所有從QObject或者子類派生的類都能夠包含信號和槽。當對象改變狀態時,信號就由該對象發射出去。

槽是用來接收信號的普通的函數;多個信號可以與單個的槽進行連接,單個信號也可以與多個槽進行連接。

由此組建成了一個強大的控件編程機制。

控件發射信號到指定的處理槽函數,一般有以下幾種方法:

  1. 在窗口UI設計中操作添加信號和槽
  2. 通過代碼連接信號和槽

淺嘗輒止

Qt Designer提供了基本的編輯信號和槽的方法。讓咱們通過一個例子來試一試吧。

我們做一個例子,這個例子呢,主要實現一個功能:當點擊關閉按鈕之後,關閉主窗口。

打開Qt Designer工具,創建一個主窗口(Main Window)。在左側Buttons欄中選中QPushButton,拖拽到主窗口中。

並將顯示文本更改為:關閉窗口。為了大家能更清晰的看到細節,木辛老師調整了以下按鈕的尺寸和顯示文本的大小。

木辛老師的編程課堂:Python和Qt之頁面佈局實戰篇(2)

放置按鈕到主窗口

接下來,我們需要打開“信號和槽編輯器”。

點擊頂部菜單中的“視圖”,然後選擇“信號/槽編輯器”,打開信號和槽編輯器。效果如下圖⬇️⬇️⬇️

木辛老師的編程課堂:Python和Qt之頁面佈局實戰篇(2)

信號槽編輯窗口

此時,點擊菜單欄中的“Edit”中的“編輯信號/槽”,進入信號槽編輯模式。

在這個模式之下,可以直接在控件上(“關閉窗口”按鈕)上進行信號和槽的操作。

"

我們學習了通過水平佈局、垂直佈局、柵格佈局等進行UI頁面的設計實現的知識,這一節裡邊,我們要給這些美觀的控件添加一些動作。

請點擊右上角“關注”按鈕關注我們喲:跟著木辛老師學習Python編程知識,變身快樂的編程達人吧~

讓我們通過實戰,來進一步鞏固學過的知識吧。

信號和槽關聯

信號(signal)和槽(slot)是Qt的核心機制。

在創建事件循環之後,通過建立信號和槽的連接就可以實現對象之間的通信。當信號發射的時候,與之關聯的槽函數將會自動執行。

所有從QObject或者子類派生的類都能夠包含信號和槽。當對象改變狀態時,信號就由該對象發射出去。

槽是用來接收信號的普通的函數;多個信號可以與單個的槽進行連接,單個信號也可以與多個槽進行連接。

由此組建成了一個強大的控件編程機制。

控件發射信號到指定的處理槽函數,一般有以下幾種方法:

  1. 在窗口UI設計中操作添加信號和槽
  2. 通過代碼連接信號和槽

淺嘗輒止

Qt Designer提供了基本的編輯信號和槽的方法。讓咱們通過一個例子來試一試吧。

我們做一個例子,這個例子呢,主要實現一個功能:當點擊關閉按鈕之後,關閉主窗口。

打開Qt Designer工具,創建一個主窗口(Main Window)。在左側Buttons欄中選中QPushButton,拖拽到主窗口中。

並將顯示文本更改為:關閉窗口。為了大家能更清晰的看到細節,木辛老師調整了以下按鈕的尺寸和顯示文本的大小。

木辛老師的編程課堂:Python和Qt之頁面佈局實戰篇(2)

放置按鈕到主窗口

接下來,我們需要打開“信號和槽編輯器”。

點擊頂部菜單中的“視圖”,然後選擇“信號/槽編輯器”,打開信號和槽編輯器。效果如下圖⬇️⬇️⬇️

木辛老師的編程課堂:Python和Qt之頁面佈局實戰篇(2)

信號槽編輯窗口

此時,點擊菜單欄中的“Edit”中的“編輯信號/槽”,進入信號槽編輯模式。

在這個模式之下,可以直接在控件上(“關閉窗口”按鈕)上進行信號和槽的操作。

木辛老師的編程課堂:Python和Qt之頁面佈局實戰篇(2)

打開編輯模式

具體操作如下

  1. 點擊選中“關閉窗口”按鈕
  2. 按住不放,拖動到主窗口上,釋放,此時會顯示一個紅色的箭頭指向
  3. 接著系統會彈出“配置連接”的對話框
  4. 選中這個彈出框底部的“顯示從QWidget繼承的信號和槽”
  5. 選中clicked()函數,之後在Form中選中close(),點擊下方的OK按鈕確定信號和槽的連接
"

我們學習了通過水平佈局、垂直佈局、柵格佈局等進行UI頁面的設計實現的知識,這一節裡邊,我們要給這些美觀的控件添加一些動作。

請點擊右上角“關注”按鈕關注我們喲:跟著木辛老師學習Python編程知識,變身快樂的編程達人吧~

讓我們通過實戰,來進一步鞏固學過的知識吧。

信號和槽關聯

信號(signal)和槽(slot)是Qt的核心機制。

在創建事件循環之後,通過建立信號和槽的連接就可以實現對象之間的通信。當信號發射的時候,與之關聯的槽函數將會自動執行。

所有從QObject或者子類派生的類都能夠包含信號和槽。當對象改變狀態時,信號就由該對象發射出去。

槽是用來接收信號的普通的函數;多個信號可以與單個的槽進行連接,單個信號也可以與多個槽進行連接。

由此組建成了一個強大的控件編程機制。

控件發射信號到指定的處理槽函數,一般有以下幾種方法:

  1. 在窗口UI設計中操作添加信號和槽
  2. 通過代碼連接信號和槽

淺嘗輒止

Qt Designer提供了基本的編輯信號和槽的方法。讓咱們通過一個例子來試一試吧。

我們做一個例子,這個例子呢,主要實現一個功能:當點擊關閉按鈕之後,關閉主窗口。

打開Qt Designer工具,創建一個主窗口(Main Window)。在左側Buttons欄中選中QPushButton,拖拽到主窗口中。

並將顯示文本更改為:關閉窗口。為了大家能更清晰的看到細節,木辛老師調整了以下按鈕的尺寸和顯示文本的大小。

木辛老師的編程課堂:Python和Qt之頁面佈局實戰篇(2)

放置按鈕到主窗口

接下來,我們需要打開“信號和槽編輯器”。

點擊頂部菜單中的“視圖”,然後選擇“信號/槽編輯器”,打開信號和槽編輯器。效果如下圖⬇️⬇️⬇️

木辛老師的編程課堂:Python和Qt之頁面佈局實戰篇(2)

信號槽編輯窗口

此時,點擊菜單欄中的“Edit”中的“編輯信號/槽”,進入信號槽編輯模式。

在這個模式之下,可以直接在控件上(“關閉窗口”按鈕)上進行信號和槽的操作。

木辛老師的編程課堂:Python和Qt之頁面佈局實戰篇(2)

打開編輯模式

具體操作如下

  1. 點擊選中“關閉窗口”按鈕
  2. 按住不放,拖動到主窗口上,釋放,此時會顯示一個紅色的箭頭指向
  3. 接著系統會彈出“配置連接”的對話框
  4. 選中這個彈出框底部的“顯示從QWidget繼承的信號和槽”
  5. 選中clicked()函數,之後在Form中選中close(),點擊下方的OK按鈕確定信號和槽的連接
木辛老師的編程課堂:Python和Qt之頁面佈局實戰篇(2)

我們使用預覽功能,預覽一下效果吧。

具體步驟:點擊菜單欄中的“窗體”,並點擊“預覽”(當然,也可以通過快捷鍵command + R)執行預覽。

顯示出主窗體之後,點擊“關閉窗口”按鈕,可以成功關閉當前窗口,表示編寫成功。

按鈕控件點擊之後,會通過clicked()信號發送出去;在右側的MainWindow的槽函數close()會接收到這個信號,並按照既定的方法執行,也就是會執行關閉當前主窗口的操作。

"

我們學習了通過水平佈局、垂直佈局、柵格佈局等進行UI頁面的設計實現的知識,這一節裡邊,我們要給這些美觀的控件添加一些動作。

請點擊右上角“關注”按鈕關注我們喲:跟著木辛老師學習Python編程知識,變身快樂的編程達人吧~

讓我們通過實戰,來進一步鞏固學過的知識吧。

信號和槽關聯

信號(signal)和槽(slot)是Qt的核心機制。

在創建事件循環之後,通過建立信號和槽的連接就可以實現對象之間的通信。當信號發射的時候,與之關聯的槽函數將會自動執行。

所有從QObject或者子類派生的類都能夠包含信號和槽。當對象改變狀態時,信號就由該對象發射出去。

槽是用來接收信號的普通的函數;多個信號可以與單個的槽進行連接,單個信號也可以與多個槽進行連接。

由此組建成了一個強大的控件編程機制。

控件發射信號到指定的處理槽函數,一般有以下幾種方法:

  1. 在窗口UI設計中操作添加信號和槽
  2. 通過代碼連接信號和槽

淺嘗輒止

Qt Designer提供了基本的編輯信號和槽的方法。讓咱們通過一個例子來試一試吧。

我們做一個例子,這個例子呢,主要實現一個功能:當點擊關閉按鈕之後,關閉主窗口。

打開Qt Designer工具,創建一個主窗口(Main Window)。在左側Buttons欄中選中QPushButton,拖拽到主窗口中。

並將顯示文本更改為:關閉窗口。為了大家能更清晰的看到細節,木辛老師調整了以下按鈕的尺寸和顯示文本的大小。

木辛老師的編程課堂:Python和Qt之頁面佈局實戰篇(2)

放置按鈕到主窗口

接下來,我們需要打開“信號和槽編輯器”。

點擊頂部菜單中的“視圖”,然後選擇“信號/槽編輯器”,打開信號和槽編輯器。效果如下圖⬇️⬇️⬇️

木辛老師的編程課堂:Python和Qt之頁面佈局實戰篇(2)

信號槽編輯窗口

此時,點擊菜單欄中的“Edit”中的“編輯信號/槽”,進入信號槽編輯模式。

在這個模式之下,可以直接在控件上(“關閉窗口”按鈕)上進行信號和槽的操作。

木辛老師的編程課堂:Python和Qt之頁面佈局實戰篇(2)

打開編輯模式

具體操作如下

  1. 點擊選中“關閉窗口”按鈕
  2. 按住不放,拖動到主窗口上,釋放,此時會顯示一個紅色的箭頭指向
  3. 接著系統會彈出“配置連接”的對話框
  4. 選中這個彈出框底部的“顯示從QWidget繼承的信號和槽”
  5. 選中clicked()函數,之後在Form中選中close(),點擊下方的OK按鈕確定信號和槽的連接
木辛老師的編程課堂:Python和Qt之頁面佈局實戰篇(2)

我們使用預覽功能,預覽一下效果吧。

具體步驟:點擊菜單欄中的“窗體”,並點擊“預覽”(當然,也可以通過快捷鍵command + R)執行預覽。

顯示出主窗體之後,點擊“關閉窗口”按鈕,可以成功關閉當前窗口,表示編寫成功。

按鈕控件點擊之後,會通過clicked()信號發送出去;在右側的MainWindow的槽函數close()會接收到這個信號,並按照既定的方法執行,也就是會執行關閉當前主窗口的操作。

木辛老師的編程課堂:Python和Qt之頁面佈局實戰篇(2)

信號和槽對話框

我們保存一下這個UI文件,並轉換為Python文件,看看對應的Python代碼會使什麼樣子的吧~

"

我們學習了通過水平佈局、垂直佈局、柵格佈局等進行UI頁面的設計實現的知識,這一節裡邊,我們要給這些美觀的控件添加一些動作。

請點擊右上角“關注”按鈕關注我們喲:跟著木辛老師學習Python編程知識,變身快樂的編程達人吧~

讓我們通過實戰,來進一步鞏固學過的知識吧。

信號和槽關聯

信號(signal)和槽(slot)是Qt的核心機制。

在創建事件循環之後,通過建立信號和槽的連接就可以實現對象之間的通信。當信號發射的時候,與之關聯的槽函數將會自動執行。

所有從QObject或者子類派生的類都能夠包含信號和槽。當對象改變狀態時,信號就由該對象發射出去。

槽是用來接收信號的普通的函數;多個信號可以與單個的槽進行連接,單個信號也可以與多個槽進行連接。

由此組建成了一個強大的控件編程機制。

控件發射信號到指定的處理槽函數,一般有以下幾種方法:

  1. 在窗口UI設計中操作添加信號和槽
  2. 通過代碼連接信號和槽

淺嘗輒止

Qt Designer提供了基本的編輯信號和槽的方法。讓咱們通過一個例子來試一試吧。

我們做一個例子,這個例子呢,主要實現一個功能:當點擊關閉按鈕之後,關閉主窗口。

打開Qt Designer工具,創建一個主窗口(Main Window)。在左側Buttons欄中選中QPushButton,拖拽到主窗口中。

並將顯示文本更改為:關閉窗口。為了大家能更清晰的看到細節,木辛老師調整了以下按鈕的尺寸和顯示文本的大小。

木辛老師的編程課堂:Python和Qt之頁面佈局實戰篇(2)

放置按鈕到主窗口

接下來,我們需要打開“信號和槽編輯器”。

點擊頂部菜單中的“視圖”,然後選擇“信號/槽編輯器”,打開信號和槽編輯器。效果如下圖⬇️⬇️⬇️

木辛老師的編程課堂:Python和Qt之頁面佈局實戰篇(2)

信號槽編輯窗口

此時,點擊菜單欄中的“Edit”中的“編輯信號/槽”,進入信號槽編輯模式。

在這個模式之下,可以直接在控件上(“關閉窗口”按鈕)上進行信號和槽的操作。

木辛老師的編程課堂:Python和Qt之頁面佈局實戰篇(2)

打開編輯模式

具體操作如下

  1. 點擊選中“關閉窗口”按鈕
  2. 按住不放,拖動到主窗口上,釋放,此時會顯示一個紅色的箭頭指向
  3. 接著系統會彈出“配置連接”的對話框
  4. 選中這個彈出框底部的“顯示從QWidget繼承的信號和槽”
  5. 選中clicked()函數,之後在Form中選中close(),點擊下方的OK按鈕確定信號和槽的連接
木辛老師的編程課堂:Python和Qt之頁面佈局實戰篇(2)

我們使用預覽功能,預覽一下效果吧。

具體步驟:點擊菜單欄中的“窗體”,並點擊“預覽”(當然,也可以通過快捷鍵command + R)執行預覽。

顯示出主窗體之後,點擊“關閉窗口”按鈕,可以成功關閉當前窗口,表示編寫成功。

按鈕控件點擊之後,會通過clicked()信號發送出去;在右側的MainWindow的槽函數close()會接收到這個信號,並按照既定的方法執行,也就是會執行關閉當前主窗口的操作。

木辛老師的編程課堂:Python和Qt之頁面佈局實戰篇(2)

信號和槽對話框

我們保存一下這個UI文件,並轉換為Python文件,看看對應的Python代碼會使什麼樣子的吧~

木辛老師的編程課堂:Python和Qt之頁面佈局實戰篇(2)

ui文件轉成python文件

我們看到實例化轉換的QPushButton按鈕信號和槽通過

self.pushButton.clicked.connect(MainWindow.close)

這條語句連接起來。

在PyQt5中,信號和槽就是通過

QObject.signal.connect()

連接的。在這裡,self.pushButton 就是QObject,clicked就是signal,connect就是接收對應的槽函數MainWindow.close。

請大家一定注意:使用QObject.signal.connect()連接的槽函數不要添加括號喲,否則會出錯的。

大家都能看明白了吧?

我們再來梳理一下:

咱們的QPushButton實例化之後,就是信號的發射者,當點擊按鈕(clicked)之後會發射一個信號;

通過這行代碼內部的通信機制,當前的按鈕的點擊事件已經被關聯到主窗口的關閉事件(close);

然後通知接受者窗體,運行槽函數close()。

這個流程是不是非常簡單呀?

底層的通訊細節Qt已經幫我們很完美的藏起來了,我們只需要知道怎麼關聯信號和槽就可以了喲!

再深入學習一下

對於我們剛剛入門Qt編程的新手來說,學習信號和槽的過程中必須面對兩個問題

  1. 第一個是PyQt默認有哪些信號和槽;
  2. 第二個是如何使用這些信號和槽。

如何更好的解決這兩個問題,並獲得更多有用的知識和代碼呢?

最好的辦法就是,咱們通過Qt Designer的信號槽編輯器設計出對應的邏輯,然後通過PyCharm的PyUIC工具,將.ui轉換為.py文件。

這樣,我們通過學習python文件,就能很好的瞭解PyQt 中關於信號和槽機制的邏輯了。

好了,我們今天的課程就到著了吧。

總結一下

我們今天的課程學習了

  1. 什麼信號和槽
  2. 如何建立信號的槽
  3. 如何進一步得到更復雜的代碼,以方便我們學習

希望大家在課後一定要勤加練習喲,通過Qt Designer工具,反覆的將多個控件進行操作,建立和刪除信號和槽。

只有多多實踐,牢固掌握基礎知識,才是通往高級軟件工程師的捷徑哈!

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

快樂編程,快樂成長!

"

相關推薦

推薦中...