网站如何做seo的,电子商务平台系统,网站建设制作浩森宇特,网页设计版式图片文章目录 是否可用是否显示/隐藏是否编辑是否为活跃窗口关闭综合案例信息提示状态提示工具提示“这是什么”提示 焦点控制单个控件角度父控件角度 是否可用 setEnabled(bool)#xff1a;该函数用于设置QWidget控件的可用性#xff0c;参数bool为True表示该控件为可用状态该函数用于设置QWidget控件的可用性参数bool为True表示该控件为可用状态False表示该控件为不可用状态。当控件处于不可用状态时该控件将无法响应用户的交互事件。 isEnabled()该函数用于获取QWidget控件的当前可用状态返回值为一个bool类型True表示该控件为可用状态False 表示该控件为不可用状态。
以下为代码示例
from PyQt5.QtWidgets import *
import sysapp QApplication(sys.argv)window QWidget()
window.resize(300, 300)
btn QPushButton(window)
btn.setText(按钮)# 设置按钮为不可用
btn.setEnabled(False)
print(btn.isEnabled()) # 获取当前按钮是否可用的状态并打印出来window.show()sys.exit(app.exec_())运行结果 观察一下打印结果按钮设置为不可用之后会颜色会变暗且不能被点击。 是否显示/隐藏 setVisible(bool)或setHidden(bool)这个函数用于设置QWidget控件的可见状态。当参数bool为True时控件将会显示出来当参数bool为False时控件将会隐藏起来。 show()这个函数将会显示QWidget控件。相当于调用setVisible(True)。 hide()这个函数将会隐藏QWidget控件。相当于调用setVisible(False)。 isHidden()这个函数返回一个bool值表示当前QWidget控件是否处于隐藏状态。如果返回值为True表示控件被隐藏如果返回值为False表示控件可见。 isVisible()这个函数返回一个bool值表示当前QWidget控件是否处于可见状态。如果返回值为True表示控件可见如果返回值为False表示控件隐藏。 isVisibleTo(widget)这个函数用于检查QWidget控件是否对另一个特定的widget可见。父控件显示的时候子控件是否会跟着显示它接受一个widget作为参数返回一个bool值表示控件是否对该widget可见。
注意
visibel代表控件最终的状态是否被我们所减被其他控件遮挡也属于可见hide可理解为相对于父控件是否可见
以下为代码示例
from PyQt5.QtWidgets import *
import sysclass Window(QWidget):# 重写绘制事件def paintEvent(self, QPaintEvent):print(窗口被绘制)return super().paintEvent(QPaintEvent)class Btu(QPushButton):# 重写绘制事件def paintEvent(self, QPaintEvent):print(按钮被绘制)return super().paintEvent(QPaintEvent)if __name__ __main__:app QApplication(sys.argv)window Window()window.resize(300, 300)btu Btu(window)btu.setText(按钮)btu.setVisible(False)# 打印父控件如果显示的时候子控件是否跟着被显示print(btu.isVisibleTo(window))window.show()sys.exit(app.exec_())运行结果 可以看到按钮已经被隐藏 是否编辑
设置窗口标题xxx[*] setWindowModified(bool)这个函数用于设置QWidget控件的编辑状态。当参数bool为True时控件将会被视为已编辑当参数bool为False时控件将不再被视为已编辑。 isWindowModified()这个函数返回一个bool值表示当前QWidget控件是否处于编辑状态。如果返回值为True表示控件已经被编辑过如果返回值为False表示控件未被编辑。
代码示例
from PyQt5.QtWidgets import *
import sysapp QApplication(sys.argv)window QWidget()
window.setWindowTitle([*]交互状态)
window.resize(300, 300)window.setWindowModified(True) # 设置窗口可编辑状态
print(window.isWindowModified())window.show()
sys.exit(app.exec_())运行结果 是否为活跃窗口
活跃窗口是用户当前正在与之交互的窗口例如正在编辑文本、接收键盘输入或执行操作。
isActiveWindow(): 这个函数用于检查QWidget控件是否为活跃窗口。如果控件是当前应用程序激活的窗口即接收键盘和鼠标事件的窗口则函数返回True否则返回False。
代码示例
from PyQt5.QtWidgets import *
import sysapp QApplication(sys.argv)w1 QWidget()
w1.resize(300, 300)
w1.setWindowTitle(w1)w2 QWidget()
w2.resize(400, 200)
w2.setWindowTitle(w2)w1.show()
w2.show()w1.raise_() # 将w1窗口设为顶层窗口print(w1.isActiveWindow()) # 打印w1是否为活跃窗口
print(w2.isActiveWindow()) # 打印w2是否为活跃窗口sys.exit(app.exec_())运行结果 从下图中我们看到即使使用了raise_()将w1窗口设置为顶层窗口但是w1却不是活跃窗口标题栏为灰色。 关闭 close()这个函数用于关闭QWidget控件使其不可见。调用该函数时会触发 closeEvent() 函数您可以在该函数中执行额外的操作例如先隐藏控件等待异步操作完成后再关闭。 setAttribute(Qt.WA_DeleteOnClose, True)这个函数就是告诉 PyQt 在控件关闭后将其删除。由于控件在关闭时不会自动删除因此需要在退出函数closeEvent()中调用 deleteLater() 函数或手动删除控件。
代码示例
from PyQt5.QtWidgets import *
from PyQt5.QtCore import Qt
import sysapp QApplication(sys.argv)window QWidget()
window.resize(300, 300)btn QPushButton(window)
btn.setText(按钮)btn.destroyed.connect(lambda: print(按钮被销毁)) # 绑定销毁事件若按钮被销毁则打印“按钮被销毁”#### 测试代码区 ######## 测试代码区 ####window.show()
sys.exit(app.exec_())下面将再测试代码区中编写测试API的代码
btn.close()
print(btn.isHidden())运行结果 按钮已被隐藏控制台输出True按钮被隐藏而没有被释放。 btn.setAttribute(Qt.WA_DeleteOnClose, True)
btn.close()运行结果 综合案例
案例创建一个窗口包含一个文本框和一个按钮以及一个标签。
要求
默认状态标签隐藏文本框和按钮显示按钮设置为不可用状态。当文本框有内容时标签显示登录让按钮可用否则不可用。当文本框内容为PyQt5时点击按钮则显示标签并展示文本为登录成功否则为失败。
涉及知识点
文本框的创建QLineEdit类文本框监测内容变更textChanged信号文本框内容的获取text()方法按钮状态的设置
综合案例的代码
from PyQt5.QtWidgets import *
import sysclass Window(QWidget):def __init__(self, parentNone):super().__init__(parent)self.setWindowTitle(综合案例)self.resize(300, 300)self.setup_ui()def setup_ui(self):self.label QLabel(self)self.label.setStyleSheet(background-color: cyan;)self.label.move(100, 50)self.label.hide()self.lineEdit QLineEdit(self)self.lineEdit.move(100, 100)self.lineEdit.textChanged.connect(self._textChanged) # 文本框文本改变事件绑定self.btu QPushButton(self)self.btu.setText(按钮)self.btu.move(100, 150)self.btu.setEnabled(False)self.btu.pressed.connect(self._btuPressed)def _textChanged(self):self.label.show()self.label.setText(登录)self.label.adjustSize()if len(self.lineEdit.text()) 0:self.btu.setEnabled(True)else:self.label.hide()def _btuPressed(self):self.label.show()if self.lineEdit.text() PyQt5:self.label.setText(登录成功)else:self.label.setText(登录失败)self.label.adjustSize() # 将标签设置为自适应if __name__ __main__:app QApplication(sys.argv)window Window()window.show()sys.exit(app.exec_())运行结果 信息提示
状态提示 statusTip()函数 它用于获取控件的状态提示信息返回一个字符串。示例tooltip button.statusTip() setStatusTip(str)函数 它用于设置控件的状态栏提示信息。示例button.setStatusTip(Press this button to do something cool!)
示例代码
from PyQt5.QtWidgets import *
import sysapp QApplication(sys.argv)window QMainWindow() # 懒加载用到的时候才会创建
window.setWindowTitle(信息案例)
window.resize(300, 300)window.statusBar() # 设置状态栏
window.setStatusTip(这是一个窗口) # 设置状态栏提示信息window.show()sys.exit(app.exec_())运行结果 在以上代码中使用QMainWindow()是因为它是PyQt中提供的一个主窗口类适用于创建带有菜单栏、工具栏、状态栏和中央部件的应用程序窗口。
工具提示 toolTip() 函数 它用于获取控件的工具提示信息返回一个字符串。示例tooltip button.toolTip() setToolTip(str) 函数 它用于设置控件的工具提示信息。示例button.setToolTip(This is a button)
工具提示持续时间
工具提示可以设置它们在屏幕上显示的持续时间。默认情况下工具提示将持续一段时间后自动消失。 toolTipDuration() 函数 它用于获取工具提示的持续时间以毫秒为单位。示例duration QToolTip.toolTipDuration() setToolTipDuration(msec) 函数 它用于设置工具提示的持续时间以毫秒为单位。示例QToolTip.setToolTipDuration(5000)
示例代码
from PyQt5.QtWidgets import *
import sysapp QApplication(sys.argv)window QMainWindow()
window.setWindowTitle(信息案例)
window.resize(300, 300)label QLabel(window)
label.setText(标签)label.setToolTip(这是一个标签) # 设置标签工具提示信息
print(label.toolTip()) # 打印工具提示信息label.setToolTipDuration(2000) # 设置标签工具提示信息为2秒
print(label.toolTipDuration()) # 打印工具提示信息的时间window.show()
sys.exit(app.exec_())运行结果 “这是什么”提示 whatsThis() 函数 它用于获取控件的“这是什么”提示信息返回一个字符串。示例wts button.whatsThis() setWhatsThis(str) 函数 它用于设置控件的“这是什么”提示信息。示例button.setWhatsThis(This is a button)
示例代码
from PyQt5.QtWidgets import *
from PyQt5.QtCore import Qt
import sysapp QApplication(sys.argv)window QMainWindow()
window.setWindowTitle(信息案例)
window.resize(300, 300)window.setWindowFlags(Qt.WindowContextHelpButtonHint)label QLabel(window)
label.setText(标签)
label.adjustSize()label.setWhatsThis(这是什么标签)
print(label.whatsThis()) # 打印“这是什么”提示信息window.show()
sys.exit(app.exec_())运行结果 点击窗口标题栏中的“?”将鼠标移动到标签并点击点击后即出现“这是什么”提示信息。 以上代码中使用了 window.setWindowFlags(Qt.WindowContextHelpButtonHint) 这行代码来设置窗口标志其作用是在窗口的标题栏右侧添加一个帮助按钮也就是包含一个问号图标并显示What’s This文本的帮助按钮用于提供更多的上下文相关帮助信息。
焦点控制
在 PyQt 中焦点控制是指应用程序中各个控件接收焦点的方式和顺序。焦点控制允许用户使用键盘或鼠标与特定控件进行交互。下面是一些在 PyQt 中实现焦点控制的方法和技术。
单个控件角度 setFocus() 函数 它用于将焦点设置到特定控件上使该控件成为接收键盘输入的目标。示例widget.setFocus() setFocusPolicy(Policy) 函数 它用于设置控件的焦点策略即定义用户如何通过键盘或鼠标与控件交互。可选的焦点策略包括 Qt.TabFocus通过 Tab 键进行切换焦点。Qt.ClickFocus通过点击鼠标进行设置焦点。Qt.StrongFocus允许通过 Tab 键和点击鼠标进行焦点设置。Qt.NoFocus控件不接收焦点。 示例widget.setFocusPolicy(Qt.TabFocus) clearFocus() 函数 它用于清除控件上的焦点使控件不再处于焦点状态。示例widget.clearFocus()
示例代码
from PyQt5.QtWidgets import *
from PyQt5.QtCore import Qt
import sysapp QApplication(sys.argv)window QWidget()
window.setWindowTitle(焦点控制)
window.resize(300, 300)le1 QLineEdit(window)
le1.move(50, 50)le2 QLineEdit(window)
le2.move(50, 100)le3 QLineEdit(window)
le3.move(50, 150)window.show()
sys.exit(app.exec_())运行结果 以上代码没有设置获取焦点的策略默认情况下运行程序第一个文本框会获得焦点且按下Tab键可切换焦点。 在以上代码的基础上设置le2获取焦点的策略为通过Tab键获取焦点
le2.setFocusPolicy(Qt.TabFocus)运行结果 鼠标点击le2并不能获取到焦点而点击le3可获取到焦点只有通过Tab键才能让le2获取焦点。 父控件角度 focusWidget() 函数 使用此函数可以查找当前具有焦点的子控件。示例parent.focusWidget() focusNextChild() 函数 使用此函数可以将焦点从当前具有焦点的子控件移动到下一个子控件。示例parent.focusNextChild() focusPreviousChild() 函数 使用此函数可以将焦点从当前具有焦点的子控件移动到上一个子控件。示例parent.focusPreviousChild() focusNextPrevChild(bool) 函数 使用此函数可以根据当前具有焦点的子控件将焦点移动到下一个或上一个子控件。当参数为 true 时向下查找下一个子控件当参数为 false 时向上查找上一个子控件。示例parent.focusNextPrevChild(True) setTabOrder(pre_widget, next_widget) 函数 使用此函数可以设置两个控件之间的 Tab 键顺序按下 Tab 键时焦点会从第一个控件切换到第二个控件。示例QWidget.setTabOrder(widget1, widget2)
示例1代码
from PyQt5.QtWidgets import *
import sysclass Window(QWidget):def mousePressEvent(self, QPressEvent):print(获取焦点的控件, self.focusWidget())if __name__ __main__:app QApplication(sys.argv)window Window()window.resize(300, 300)le1 QLineEdit(window)le1.move(50, 0)print(le1对象, le1)le2 QLineEdit(window)le2.move(50, 50)le3 QLineEdit(window)le3.move(50, 100)window.show()# 获取当前窗口内部所有子控件当中获取焦点的那个控件print(window.focusWidget())sys.exit(app.exec_())运行结果 窗口显示时焦点为None的原因初始焦点未明确设置时窗口显示时焦点会默认为None也就是执行到window.show()的时候所有子控件都没有获取到焦点而往后继续执行的过程中第一个子控件才获取到焦点。
示例2代码
from PyQt5.QtWidgets import *
import syapp QApplication(sys.argv)window QWidget()
window.resize(300, 300)le1 QLineEdit(window)
le1.move(50, 0)le2 QLineEdit(window)
le2.move(50, 50)le3 QLineEdit(window)
le3.move(50, 100)# 设置获取焦点规则
window.setTabOrder(le1, le3)
window.setTabOrder(le3, le2)window.show()sys.exit(app.exec_())运行结果