from PyQt5.QtWidgets import (QWidget
, QVBoxLayout , QHBoxLayout,
QLineEdit, QPushButton)
from PyQt5.QtCore import pyqtSignal
from PyQt5 import QtCore
##############################################
# 参考大丸子的博客
#http://jimmykuu.sinaapp.com/blog/11
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)
#网上百度到的说明:其作用是如其名称一样,用来将QObject 里的子孙QObject的某些信号按照其objectName连接到相应的槽上
# ,如 button_hello.setObjectName("hello_button")
# 官网解释用法: http://doc.qt.io/qt-5/qmetaobject.html#connectSlotsByName
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
from PyQt5.QtWidgets import QApplication
app = QApplication(sys.argv)
login = LoginView()
login.show()
sys.exit(app.exec_())
原文:http://www.cnblogs.com/ribavnu/p/4883888.html