From 9999f72113fbba7c37aa1399c34bd14bd53e9fe3 Mon Sep 17 00:00:00 2001 From: muzing Date: Tue, 14 Jun 2022 11:23:20 +0800 Subject: [PATCH] Add 03-01-06 --- .../06-QWidget-不可见与不可用.py | 75 +++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 03-QtWidgets-常用控件/01-QWidget-控件的基类/06-QWidget-不可见与不可用.py diff --git a/03-QtWidgets-常用控件/01-QWidget-控件的基类/06-QWidget-不可见与不可用.py b/03-QtWidgets-常用控件/01-QWidget-控件的基类/06-QWidget-不可见与不可用.py new file mode 100644 index 0000000..7ed36d8 --- /dev/null +++ b/03-QtWidgets-常用控件/01-QWidget-控件的基类/06-QWidget-不可见与不可用.py @@ -0,0 +1,75 @@ +import sys + +from PySide6 import QtCore, QtWidgets + +""" +QWidget 可以设置不可见与不可用 + +窗口上的控件被设置为不可见后被隐藏,但不会被释放,仍占据原先的位置 +.setVisible() 设置可见/不可见 +.isVisible() 获取可见状态 +.hide() 设为不可见,等同于.setVisible(False) +.show() 对于非窗口的控件,等同于.setVisible(True) + +对于编辑器、按钮、下拉框等控件可以设置不可用,用户不再能与之交互 +.setEnabled() 设置可用/不可用 +.isEnabled() 获取可用状态 +""" + + +class MyWidget(QtWidgets.QWidget): + def __init__(self): + super().__init__() + self.setWindowTitle("QWidget-不可见与不可用") + self.resize(800, 600) + self.setup_ui() + self.test_01() + self.test_02() + + def setup_ui(self) -> None: + """设置界面""" + self.label = QtWidgets.QLabel("标签", self) + self.label.resize(200, 200) + self.label.setStyleSheet("background-color: cyan;") + self.label.move(50, 50) + + self.text_edit = QtWidgets.QTextEdit(self) + self.text_edit.move(500, 50) + self.text_edit.setPlaceholderText("这是一个文本编辑器") + + self.button_1 = QtWidgets.QPushButton("切换可见状态", self) + self.button_1.move(300, 50) + + self.button_2 = QtWidgets.QPushButton("切换可用状态", self) + self.button_2.move(300, 150) + + def test_01(self) -> None: + """测试可见与不可见""" + + @QtCore.Slot() + def test_slot() -> None: + if self.label.isVisible(): + self.label.setVisible(False) + else: + self.label.setVisible(True) + + self.button_1.clicked.connect(test_slot) # type: ignore + + def test_02(self) -> None: + """测试可用与不可用""" + + @QtCore.Slot() + def test_slot() -> None: + if self.text_edit.isEnabled(): + self.text_edit.setEnabled(False) + else: + self.text_edit.setEnabled(True) + + self.button_2.clicked.connect(test_slot) # type: ignore + + +if __name__ == "__main__": + app = QtWidgets.QApplication([]) + window = MyWidget() + window.show() + sys.exit(app.exec())