PyQt的signal 和 solit的補充

2021-09-21 15:11:26 字數 2382 閱讀 9829

from pyqt5.qtwidgets import (qwidget

, qvboxlayout , qhboxlayout,

qlineedit, qpushbutton)

from pyqt5.qtcore import pyqtsignal

from pyqt5 import qtcore

##############################################

# 參考大丸子的部落格

class loginview(qwidget):

## 登入介面時傳送 關閉訊號

quitsignal = pyqtsignal()

loginsignal = pyqtsignal(list)

# server端沒有響應

openfailuresignal = pyqtsignal()

def __init__(self, parent=none):

super(loginview, self).__init__(parent)

self.ids_receive =

self._init_ui()

def _init_ui(self):

layout_button = qhboxlayout()

layout_input = qhboxlayout()

self.input_name = qlineedit()

self.input_pass = qlineedit()

button_login = qpushbutton("登入")

button_login.setobjectname("ok_button")

button_quit = qpushbutton("取消")

button_hello = qpushbutton("hello")

self.button_hello = button_hello

button_hello.setobjectname("hello_button")

#button_login.clicked.connect(self.do_login)

#button_quit.clicked.connect(self.loginquit)

layout_button.addwidget(button_login)

layout_button.addwidget(button_quit)

layout_input.addwidget(self.input_name)

layout_input.addwidget(self.input_pass)

layout_input.addwidget(self.button_hello)

layout_main = qvboxlayout()

self.setlayout(layout_main)

layout_main.addlayout(layout_button)

layout_main.addlayout(layout_input)

# qmetaobject. connectslotsbyname(qobject)

# ,如 button_hello.setobjectname("hello_button")

# 官網解釋用法:

qtcore.qmetaobject.connectslotsbyname(self)

def loginquit(self):

print ("cencel")

#試試登出掉該裝飾器

# 有點奇怪啊,一旦注釋掉裝飾器,列印會執行兩次啊

#qtcore.pyqtslot(str, str)可以攜帶引數的

@qtcore.pyqtslot()

def on_hello_button_clicked(self):

print('on_pbhello_clicked')

@qtcore.pyqtslot()

def on_ok_button_clicked(self):

print ("ok")

self.loginsignal.emit([1, 2])

def do_login(self):

#獲取使用者和密碼文字框的內容

u_name = self.input_name.text()

u_pass = self.input_pass.text()

print('u_name', u_name, u_pass)

if __name__ == '__main__':

import sys

login = loginview()

login.show()

PyQt的signal 和 solit的補充

from pyqt5.qtwidgets import qwidget qvboxlayout qhboxlayout,qlineedit,qpushbutton from pyqt5.qtcore import pyqtsignal from pyqt5 import qtcore 參考大丸子的部...

如何使用好pyqt的signal和slot

如果你是使用pyqt 4.5之後的版本,除了傳統的signal slot的連線方式外,你還多了一種比較符合python樣式的寫法。這種寫法是透過下面兩種新的pyqt物件來達成 正如其名,pyqtsingal是用來定義signal,而 pyqtslot 則是用於slot。首先,我們來了解如何利用pyq...

Pyqt 訊號(signal)和槽函式(slot)

訊號 signal 就是在特定情況下被發射 emit 的一種通告 槽函式 slot 對訊號 signal 相應的函式,接收某個物件傳送的訊號,執行某種操作。槽函式和普通函式的區別就是可與 訊號 關聯。在qt中,每乙個qobject物件和pyqt中所有繼承自qwidget的控制項 這些都是qobjec...