Python實現GUI開發Pyside2 或 Pyqt 中的信號和槽


【信號與槽的構建方法】

{pushButton}
按鈕建立信號的最常用的信號是,clicked

# 信號的連接
xxx.pushButton.clicked.connect(function_name)

# 定義槽函數
def function_name():
    try:
        print('pushButton 已經被按下!')

    except modbus_tk.modbus.ModbusError as e:
        logger.error("%s- Code=%d" % (e, e.get_exception_code()))

 

{combox}

常用的信號觸發為:

xxx.comboBox.currentIndexChanged.connect()
# 定義觸發函數
xxx.comboBox.currentIndexChanged.connect(function_name)
    

def function_name():
    item = ui_main.comboBox.currentIndex()
    print(item)

 

 

{action}

使用action的有菜單工具:

                   

 

 這兩位置是對應的,在菜單欄中建立一個新的按鈕就會在下面的action中增加一個action動作。

同時在下面增加action動作之后,也可以將其通過拖拽的方式拖到上面菜單欄。

關於action的信號與槽需要如何構建:

# 定義信號的觸發函數連接
xxx.actionnew.triggered.connect(function_Name)
# 定義槽函數
def function_name():
    try:
        print('action已經觸發!')

    except modbus_tk.modbus.ModbusError as e:
        logger.error("%s- Code=%d" % (e, e.get_exception_code()))

 

 {listWidget}

列表控件的觸發,主要是使用

itemClicked(item)

itemPressed (item)

itemDoubleClicked (item)

# 定義信號的觸發函數
#注意,在該函數中沒有傳入參數
xxx.listWidget.itemClicked.connect(function_name)

def function_name():
    index = ui_main.listWidget.currentItem()
    row = ui_main.listWidget.currentRow()
    name = ui_main.listWidget.currentItem().text()
    
    # 輸出list的信息
    print(index)
    print(row)
    print(name)

 

{tab Widget}

tab Widget 表格式主要在切換表的時候切換畫面

Tab的觸發函數:

tabWidget.currentChanged

#定義信號觸發函數
tabWidget.currentChanged.connect(function_name)
    
    # 定義觸發函數


def function_name():
    index=ui_main.tabWidget.currentIndex()
    print(index)

 

{TreeWidget}

樹和節點

首先建立一個如下的控件

 

樹的信號觸發函數(signal):

xxx.treeWidget.clicked.connect(function_name)

    # 定義觸發函數    
xxx.treeWidget.clicked.connect(function_name)

def function_name():
    item = xxx.treeWidget.currentItem()
    text1 = item.text(0)
    text2 = item.text(1)
    print(text1)
    print(text2)

 

{stackedWidget}

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM