3 建立窗口控件
建立窗口的控件,需要注意以下几点:
1)控件本身也是窗口,它的父窗口是主窗口,这里定义父窗口的原因是,让所有控件的事件,主窗口都能感知,并且做出响应。
2)控件有一些基本的响应程序,如果这些程序不够用,需要人为定义消息响应。
3)控件响应的原理,是“槽”+“事件”+“响应程序”的机理,其中“槽”将事件和响应程序关联起来,这个操作用connect语句完成;可以推断,槽是操作系统的标准事件触发,响应程序是用户设定,这是一个基本的回调机制。
4)控件可以是窗口类内变量或者定义成应用内变量,无差别。
5)控件是窗口,当然可以用setGeometry()设定其几何尺寸。
6)pushbutton.clicked.connect( self.buttonpushfunction )就是将按钮的点击事件和 函数buttonpushfunction相关联。
7)closebutton.clicked.connect(self.close )是将一个名称为closebutton的按钮点击事件,和 QMainWindow的close函数进行关联,因为close是标准函数,所以用户不需要写出回调函数。
实验代码:
from PyQt5.QtWidgetsimport QMainWindow,QApplication,QWidget, QPushButton,QLabel
import sys
class MyWnd( QMainWindow ):
def __init__(self):
super().__init__()
self.title ="this is exam"
self.top =100
self.left =100
self.width =400
self.height =300
closebutton = QPushButton("Close",self)
closebutton.setGeometry(20,20,80,30)
closebutton.clicked.connect(self.close )
pushbutton = QPushButton("Push",self)
pushbutton.setGeometry(100,20,80,30)
pushbutton.clicked.connect(self.buttonpushfunction )
self.m_lab = QLabel(self)
self.m_lab.setGeometry(20,80,80,30)
self.initUI()
def initUI(self):
self.setWindowTitle(self.title)
self.setGeometry(self.top ,self.left ,self.width ,self.height )
self.show()
def buttonpushfunction(self):
self.m_lab.setText("pushed button")
if __name__ =="__main__":
app = QApplication( sys.argv )
win = MyWnd()
sys.exit( app.exec() )
网友评论