文章目录
本章是在 窗体MainWindow的属性设置后第二篇关于PyQt5的控件以及属性介绍,主要介绍编辑Tab次序、编辑信号与槽、新增界面的方法;这些界面或者代码层次都是可以实现的,不过本章基于designer.exe界面进行编辑。
1.编辑Tab次序
①从Edit选中编辑Tab顺序:
②主界面显示数字表示我们按Tab键时光标跳动的顺序;修改顺序依次点击
③退出编辑Tab次序,只需点击编辑窗口控件按钮:
2.编辑信号与槽
(1)同个界面
A.拖拽
①从Edit选中编辑信号/槽:
②主界面切换到编辑信号/槽格式:
③例如:
选中pushButton
作为发射者,拖住不动会有一个下三角标志:
移到TextLabel
上将其作为接收者,会弹出“配置连接”窗口:
在“配置连接”窗口左右两侧选择对应的信号,这里按钮选择单击clicked()
,标签选择隐藏hide()
:
这样就实现了单机按钮,标签隐藏的作用。
完成配置连接后,退出编辑信号/槽界面,只需点击编辑窗口控件按钮:
未点击按钮前:
点击按钮后:
B.使用信号/槽编辑器
①在界面右下方“信号/槽编辑器”选项卡:
②点击上方的绿色加号实现添加信号/槽,点击上方的红色减号实现添加信号/槽:
③信号是指发送者的动作,槽是指接收者的动作。
例:设置点击“清空”按钮后可以将姓名、性别、专业后面的编辑框内容清空
预览:
文本编辑框未输入内容:
文本编辑框输入内容:
点击“清空”按钮:
(2)不同界面
1.发送界面
from PyQt5.QtCore import pyqtSignal
class Ui_Form(QtWidgets.QMainWindow):
signal = pyqtSignal(int) ####
def setupUi(self, Form):
Form.setObjectName("Form")
Form.resize(400, 95)
self.lineEdit.editingFinished.connect(self.emit_signal) ####
def emit_signal(self): ####
dataint = int(self.lineEdit.text())
self.signal.emit(dataint)
2.接收界面(主界面)
window1.show()
window1.signal.connect(self.zifuhouyi_weishu_2)
def zifuhouyi_weishu_2(self,dataint):
global zifu
n=dataint
注:显示哪个界面,哪个界面后接signal
检测另一界面关闭
主界面:
tanwin.closed.connect(self.tanwin_delete)
另一界面(重写closeEvent函数):
class tanchuang_win(QMainWindow,window2):
closed = pyqtSignal()
def closeEvent(self, event):
self.closed.emit()
event.accept()
3.新增界面
(1)第一种方法
①生成的Form文件显示的是:
class Ui_Form(object):
def setupUi(self, Form):
将object
改成QtWidgets.QMainWindow
②在main文件中引用:
from message_dpi import Ui_Form
if __name__ == '__main__':
app = QApplication(sys.argv)
mywin = Window()
dpi_window=Ui_Form()
mywin.show()
sys.exit(app.exec_())
(2)第二种方法
不更改生成的Form
文件,只在main
文件中新创一个类
from message_dpi import Ui_Form
class dpi_Window(Ui_Form,QMainWindow):
def __init__(self):
super(dpi_Window, self).__init__()
self.setupUi(self)
if __name__ == '__main__':
app = QApplication(sys.argv)
mywin = Window()
dpi_window=dpi_Window()
mywin.show()
sys.exit(app.exec_())
优先采用这种方式:如禁用最大最小化采用第一种方式无效,这种方式把Form
看作主窗体可以执行除了菜单栏和状态栏的其他操作
这种方式下还可以在主窗口控制显示的其他窗口的控件
(只不过需要指明是哪个窗口而不是使用self关键字)
例:
add_window.add_size.clear()
add_window.add_kernel.clear()
add_window.close()