控件交互
setEnabled(bool) # 设置控件是否可用(True / False)
isEnabled() # 返回控件是否可用(True / False)
控件.setEnabled(False)
时,控件显示为灰色setVisible(bool) # 设置控件是否可见(实际是控制是否绘制控件)
setHidden(bool) # 设置控件是否隐藏
show() # 展示控件
hide() # 隐藏控件
# setHiddent、show、hide三个方法,底层实际上还是调用的setVisible()方法
isHidden() # 判断控件是否隐藏,一般是基于父控件可见
isVisible() # 获取控件最终状态是否可见
isVisibleTo(widget) # 如果能随着widget控件的显示和影藏,而同步变化则返回True
设置窗口标题xxx[*] # [*] 标准格式
setWindowModified(bool) # 设置控件是否是编辑状态(True:标题栏显示*,False:标题栏不显示*)
isWindowModified() # 返回控件是否是编辑状态
控件.setWindowModified(True)
时,标题栏上会显示 * (类似于Word在编辑的时,标题栏前面显示带 *)isActiveWindow() # 返回窗口是否是活跃窗口(True / False)
控件.raise_()
将控件上升到最顶层,当前控件并不一定就是活跃窗口控件.lower()
将控件降低到最底层,当前控件并不一定就不是活跃窗口控件.close() # 关闭控件(底层实际是调用的setVisible(False),并没有删除控件)
setAttribute(Qt.WA_DeleteOnClose, True) # 设置控件在关闭的时候删除,需要在close()之前设置
close()
在底层实际调用的是 setVisible(False)
方法,本质上仅仅是隐藏了控件,并没有删除(释放)控件setAttribute(Qt.WA_DeleteOnClose, True)
方法设置,关闭控件的时候删除控件(释放)控件.destroyed.connect(lambda :print('控件被释放了'))
信号与槽来监测控件是否被释放案例
from PyQt5.Qt import *
import sys
class Windows(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle('控件交互案例')
self.resize(500, 500)
self.widget_list()
def widget_list(self):
self.add_widget()
def add_widget(self):
# 创建一个窗口, 包含一个文本框和一个按钮和一个标签
labe = QLabel(self)
labe.setText('标签')
labe.move(200, 100)
ledt = QLineEdit(self)
# ledt.setText('文本框')
ledt.move(200, 150)
btn = QPushButton(self)
btn.setText('登录')
btn.move(200, 200)
# 默认标签隐藏、文本和按钮显示,按钮设置为不可用状态
labe.hide()
btn.setEnabled(False)
# 当文本框有内容时,让按钮可用,否则不可用
def ledt_cao(text):
# if len(text) > 0:
# btn.setEnabled(True)
# else:
# btn.setEnabled(False)
# print('文本框内容发生改变')
# 0 —— False >0 —— True
btn.setEnabled(len(text))
ledt.textChanged.connect(ledt_cao)
# 当文本框内容为Fz时,点击按钮则显示标签,并展示文本为登录成功,否则为失败
def btn_cao():
# 1. 获取文本框内容
content = ledt.text()
# 2. 判断文本框内容是否为Fz,不管是否都显示标签
labe.show()
if content == 'Fz':
# 3. 是Fz,显示文本框,内容为 登录成功
labe.setText('登录成功')
else:
# 4. 不是Fz,显示文本框,内容为 登录失败
labe.setText('登录失败')
btn.pressed.connect(btn_cao)
if __name__ == '__main__':
app = QApplication(sys.argv)
w = Windows()
w.show()
sys.exit(app.exec_())
from PyQt5.Qt import *
import sys
class Windows(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle('控件交互案例')
self.resize(500, 500)
self.widget_list()
def widget_list(self):
self.add_widget()
def add_widget(self):
# 创建一个窗口, 包含一个文本框和一个按钮和一个标签
x = 150
labe = QLabel(self)
labe.setText('标签')
labe.move(x, 100)
ledt = QLineEdit(self)
# ledt.setText('文本框')
ledt.move(x, 150)
btn = QPushButton(self)
btn.setText('登录')
btn.move(x, 200)
# 默认标签隐藏、文本和按钮显示,按钮设置为不可用状态
labe.hide()
btn.setEnabled(False)
# 当文本框有内容时,让按钮可用,否则不可用
def ledt_cao(text):
# if len(text) > 0:
# btn.setEnabled(True)
# else:
# btn.setEnabled(False)
# print('文本框内容发生改变')
# 0 —— False >0 —— True
btn.setEnabled(len(text))
ledt.textChanged.connect(ledt_cao)
# 当文本框内容为Fz时,点击按钮则显示标签,并展示文本为登录成功,否则为失败
def btn_cao():
# 1. 获取文本框内容
content = ledt.text()
# 2. 判断文本框内容是否为Fz
if content == 'Fz':
# 3. 是Fz,显示文本框,内容为 登录成功
labe.setText('登录成功')
# labe.show()
# labe.adjustSize()
else:
# 4. 不是Fz,显示文本框,内容为 登录失败
labe.setText('登录失败')
# labe.show()
# labe.adjustSize()
# 由于不管内容是什么都要显示标签,所以优化代码
labe.show()
# 设置标签大小跟随文本内容(跟随内容)改变
labe.adjustSize()
btn.pressed.connect(btn_cao)
if __name__ == '__main__':
app = QApplication(sys.argv)
w = Windows()
w.show()
sys.exit(app.exec_())