PySide6.QtWidgets.QApplication¶
- class QApplication¶
QApplication
类管理 GUI 应用程序的控制流和主要设置。更多…概要¶
属性¶
autoSipEnabledᅟ
- 切换自动SIP(软件输入面板)的可见性cursorFlashTimeᅟ
- 文本光标的闪烁(眨眼)时间,以毫秒为单位doubleClickIntervalᅟ
- 区分双击和两次连续鼠标点击的时间限制(以毫秒为单位)keyboardInputIntervalᅟ
- 区分按键按下和两次连续按键按下的时间限制(以毫秒为单位)startDragDistanceᅟ
- 拖动操作开始所需的最小距离startDragTimeᅟ
- 鼠标按钮必须按住的时间(以毫秒为单位),然后才能开始拖放操作styleSheetᅟ
- 应用程序样式表wheelScrollLinesᅟ
- 当鼠标滚轮旋转时,小部件滚动的行数
方法¶
def
__init__()
def
autoSipEnabled()
def
exec_()
def
styleSheet()
插槽¶
def
setStyleSheet()
信号¶
def
focusChanged()
静态函数¶
def
aboutQt()
def
activeWindow()
def
alert()
def
allWidgets()
def
beep()
def
focusWidget()
def
font()
def
fontMetrics()
def
palette()
def
setFont()
def
setPalette()
def
setStyle()
def
startDragTime()
def
style()
def
topLevelAt()
def
widgetAt()
注意
本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。
详细描述¶
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
QApplication
通过一些基于QWidget
的应用程序所需的功能来专门化 QGuiApplication。它处理小部件特定的初始化和终止。对于任何使用Qt的GUI应用程序,无论应用程序在任何给定时间有0、1、2个或更多窗口,都精确地有一个
QApplication
对象。对于非基于QWidget
的Qt应用程序,请改用QGuiApplication,因为它不依赖于 QtWidgets 库。一些GUI应用程序提供了一种特殊的批处理模式,即提供命令行参数以在没有人工干预的情况下执行任务。在这种非GUI模式下,通常只需实例化一个普通的QCoreApplication即可,以避免不必要地初始化图形用户界面所需的资源。以下示例展示了如何动态创建适当类型的应用程序实例:
QCoreApplication* createApplication(int argc, char *argv[]) for i in range(1, argc): if not qstrcmp(argv[i], "-no-gui"): return QCoreApplication(argc, argv) return QApplication(argc, argv) if __name__ == "__main__": app = QScopedPointer(createApplication(argc, argv)) if QApplication(app.data()): # start GUI version... else: # start non-GUI version... sys.exit(app.exec())
QApplication
对象可以通过 instance() 函数访问,该函数返回一个等同于全局qApp
指针的指针。QApplication
的主要职责领域是:它使用用户的桌面设置初始化应用程序,例如
palette()
、font()
和doubleClickInterval()
。它会跟踪这些属性,以防用户全局更改桌面设置,例如通过某种控制面板。它执行事件处理,这意味着它从底层窗口系统接收事件并将它们分派给相关的小部件。通过使用 sendEvent() 和 postEvent(),您可以将自己的事件发送给小部件。
它解析常见的命令行参数并相应地设置其内部状态。有关更多详细信息,请参阅下面的
constructor documentation
。它定义了应用程序的外观和感觉,这些被封装在一个
QStyle
对象中。这可以在运行时通过setStyle()
进行更改。它通过translate()提供了对用户可见的字符串的本地化。
它提供了一些神奇的对象,比如clipboard()。
它知道应用程序的窗口。你可以使用
widgetAt()
询问某个位置的部件,获取topLevelWidgets()
的列表和closeAllWindows()
等。它管理应用程序的鼠标光标处理,参见 setOverrideCursor()
由于
QApplication
对象执行了大量的初始化操作,因此它必须在创建与用户界面相关的任何其他对象之前创建。QApplication
还处理常见的命令行参数。因此,通常在应用程序本身对argv
进行任何解释或修改之前创建它是一个好主意。函数组
系统设置
desktopSettingsAware(), setDesktopSettingsAware(),
cursorFlashTime()
,setCursorFlashTime()
,doubleClickInterval()
,setDoubleClickInterval()
,setKeyboardInputInterval()
,wheelScrollLines()
,setWheelScrollLines()
,palette()
,setPalette()
,font()
,setFont()
, fontMetrics().事件处理
exec()
, processEvents(), exit(), quit(). sendEvent(), postEvent(), sendPostedEvents(), removePostedEvents(),notify()
.GUI 样式
style()
,setStyle()
.文本处理
installTranslator(), removeTranslator() translate().
小部件
allWidgets()
,topLevelWidgets()
,activePopupWidget()
,activeModalWidget()
, clipboard(),focusWidget()
,activeWindow()
,widgetAt()
.高级光标处理
overrideCursor(), setOverrideCursor(), restoreOverrideCursor().
杂项
closeAllWindows()
, startingUp(), closingDown().另请参阅
QCoreApplicationQAbstractEventDispatcherQEventLoopQSettings
注意
当使用
from __feature__ import true_property
时,属性可以直接使用,否则通过访问器函数使用。- property autoSipEnabledᅟ: bool¶
此属性用于切换自动SIP(软件输入面板)的可见性。
将此属性设置为
true
以在进入接受键盘输入的小部件时自动显示SIP。此属性仅影响设置了WA_InputMethodEnabled属性的小部件,通常用于在按键很少或没有按键的设备上启动虚拟键盘。该属性仅在使用软件输入面板的平台上有效。
默认值取决于平台。
- Access functions:
- property cursorFlashTimeᅟ: int¶
此属性保存文本光标的闪烁(眨眼)时间,单位为毫秒。
闪烁时间是显示、反转和恢复光标显示所需的时间。通常文本光标会显示一半的光标闪烁时间,然后隐藏相同的时间,但这可能会有所不同。
在X11上的默认值是1000毫秒。在Windows上,使用控制面板的值,并且设置此属性会为所有应用程序设置光标闪烁时间。
我们建议小部件不要缓存此值,因为如果用户更改全局桌面设置,它可能随时更改。
注意
此属性可能包含负值,例如如果光标闪烁被禁用。
- Access functions:
- property doubleClickIntervalᅟ: int¶
此属性以毫秒为单位保存时间限制,用于区分双击和两次连续的鼠标点击。
X11上的默认值是400毫秒。在Windows和Mac OS上,使用操作系统的值。
- Access functions:
- property keyboardInputIntervalᅟ: int¶
此属性以毫秒为单位保存时间限制,用于区分一次按键和两次连续按键。
X11上的默认值是400毫秒。在Windows和Mac OS上,使用操作系统的值。
- Access functions:
- property startDragDistanceᅟ: int¶
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
此属性保存拖动操作开始所需的最小距离。
如果您的应用程序支持拖放操作,并且希望在用户按住按钮移动光标一定距离后开始拖放操作,您应该将此属性的值用作所需的最小距离。
例如,如果点击的鼠标位置存储在
startPos
中,而当前位置(例如在鼠标移动事件中)是currentPos
,你可以通过如下代码判断是否应该开始拖动:if ((startPos - currentPos).manhattanLength() >= QApplication.startDragDistance()) startTheDrag()
Qt 在内部使用此值,例如在
QFileDialog
中。默认值(如果平台没有提供不同的默认值)是10像素。
另请参阅
startDragTime()
manhattanLength()拖拽 和 放置
- Access functions:
- property startDragTimeᅟ: int¶
此属性表示在开始拖放操作之前,鼠标按钮必须按下的时间(以毫秒为单位)。
如果您的应用程序支持拖放功能,并且希望在用户按住鼠标按钮一定时间后开始拖放操作,您应该使用此属性的值作为延迟。
Qt 在内部也使用这种延迟,例如在
QTextEdit
和QLineEdit
中,用于启动拖动操作。默认值为500毫秒。
另请参阅
startDragDistance()
拖拽 和 放置
- Access functions:
- property styleSheetᅟ: str¶
此属性保存应用程序样式表。
默认情况下,此属性返回一个空字符串,除非用户在运行应用程序时在命令行上指定了
-stylesheet
选项。另请参阅
- Access functions:
- property wheelScrollLinesᅟ: int¶
此属性保存当鼠标滚轮旋转时,小部件要滚动的行数。
如果值超过小部件的可见行数,小部件应将滚动操作解释为单个向上翻页或向下翻页。如果小部件是
item view class
,则滚动一行的结果取决于小部件的scroll mode
设置。滚动一行可以意味着scroll one item
或scroll one pixel
。默认情况下,此属性的值为3。
另请参阅
- Access functions:
- __init__()¶
- __init__(arguments)
- Parameters:
arguments – 字符串列表
- static aboutQt()¶
显示一个关于Qt的简单消息框。消息包括应用程序使用的Qt版本号。
这对于包含在应用程序的帮助菜单中非常有用,如菜单示例所示。
此函数是
aboutQt()
的便捷插槽。返回活动的模态小部件。
模态小部件是一种特殊的顶层小部件,它是
QDialog
的子类,并将构造函数的模态参数指定为true。在用户继续程序的其他部分之前,必须关闭模态小部件。模态小部件被组织在一个堆栈中。此函数返回堆栈顶部的活动模态小部件。
返回活动的弹出小部件。
弹出窗口小部件是一个特殊的顶级小部件,它设置了
Qt::WType_Popup
小部件标志,例如QMenu
小部件。当应用程序打开一个弹出窗口小部件时,所有事件都会发送到弹出窗口。在弹出窗口小部件关闭之前,无法访问普通小部件和模态小部件。当弹出窗口部件显示时,只能打开其他弹出窗口部件。弹出窗口部件组织在一个堆栈中。此函数返回堆栈顶部的活动弹出窗口部件。
返回具有键盘输入焦点的应用程序顶层窗口,如果没有应用程序窗口具有焦点,则返回
None
。即使没有focusWidget()
,也可能存在activeWindow(),例如,如果该窗口中的任何小部件都不接受键盘事件。如果窗口不是活动窗口,则显示
widget
的警报。警报显示msec
毫秒。如果msec
为零(默认值),则警报将无限期显示,直到窗口再次变为活动状态。目前这个函数在Qt for Embedded Linux上没有任何作用。
在macOS上,这更多是在应用程序级别工作,并会导致应用程序图标在dock中弹跳。
在Windows上,这会导致窗口的任务栏条目闪烁一段时间。如果
msec
为零,闪烁将停止,任务栏条目将变为不同的颜色(当前为橙色)。在X11上,这会导致窗口被标记为“需要关注”,窗口不能被隐藏(即不能对其调用hide(),但必须以某种方式可见)才能使此功能生效。
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
返回应用程序中所有小部件的列表。
如果没有小部件,列表为空(QList::isEmpty())。
注意
一些小部件可能被隐藏。
示例:
def updateAllWidgets(): allWidgets = QApplication.allWidgets() for widget in allWidgets: widget.update()
- autoSipEnabled()¶
- Return type:
布尔
另请参阅
属性
autoSipEnabledᅟ
的获取器。- static beep()¶
敲响铃声,使用默认音量和声音。该功能在Qt for Embedded Linux中不可用。
- static closeAllWindows()¶
关闭所有顶层窗口。
此函数对于具有许多顶级窗口的应用程序特别有用。
窗口以随机顺序关闭,直到一个窗口不接受关闭事件。当最后一个窗口成功关闭时,应用程序退出,除非将quitOnLastWindowClosed设置为false。要从例如菜单触发应用程序终止,请使用QCoreApplication::quit()而不是此函数。
- static cursorFlashTime()¶
- Return type:
整数
另请参阅
属性
cursorFlashTimeᅟ
的获取器。- static doubleClickInterval()¶
- Return type:
整数
属性
doubleClickIntervalᅟ
的获取器。- exec_()¶
- Return type:
整数
当具有键盘焦点的窗口小部件从
old
更改为now
时,会发出此信号,即因为用户按下了Tab键、点击了窗口小部件或更改了活动窗口。old
和now
都可以是None
。信号在小部件通过QFocusEvent接收到更改通知后发出。
另请参阅
setFocus()
clearFocus()
FocusReason
返回具有键盘输入焦点的应用程序小部件,如果此应用程序中没有小部件具有焦点,则返回
None
。这是一个重载函数。
返回
widget
的默认字体。如果widget
的类没有注册默认字体,则返回其最近注册的超类的默认字体。- static font(className)
- Parameters:
className – str
- Return type:
这是一个重载函数。
返回给定
className
的小部件的字体。- static fontMetrics()¶
- Return type:
注意
此函数已弃用。
请改用 QFontMetricsF 构造函数。返回应用程序字体的显示(屏幕)字体度量。
如果
effect
已启用,则返回true
;否则返回false
。默认情况下,Qt 会尝试使用桌面设置。为了防止这种情况,可以调用 setDesktopSettingsAware(false)。
- static keyboardInputInterval()¶
- Return type:
整数
属性
keyboardInputIntervalᅟ
的获取器。如果传递了一个
widget
,则返回该小部件类的默认调色板。这可能是也可能不是应用程序的调色板。在大多数情况下,某些类型的小部件没有特殊的调色板,但一个显著的例外是Windows下的弹出菜单,如果用户在显示设置中为菜单定义了特殊的背景颜色。另请参阅
- static palette(className)
- Parameters:
className – str
- Return type:
这是一个重载函数。
返回给定
className
的小部件的调色板。另请参阅
请使用
activateWindow()
代替。将活动窗口设置为响应系统事件的
active
小部件。该函数从平台特定的事件处理程序中调用。警告
此函数不会将键盘焦点设置到活动小部件上。请改为调用
activateWindow()
。它设置了
activeWindow()
和focusWidget()
属性,并向所有适当的部件发送适当的WindowActivate/WindowDeactivate和FocusIn/FocusOut事件。然后窗口将以活动状态绘制(例如,行编辑中的光标将闪烁),并且将启用工具提示。- setAutoSipEnabled(enabled)¶
- Parameters:
enabled – 布尔值
另请参阅
属性
autoSipEnabledᅟ
的设置器。- static setCursorFlashTime(arg__1)¶
- Parameters:
arg__1 – 整数
另请参阅
属性
cursorFlashTimeᅟ
的设置器。- static setDoubleClickInterval(arg__1)¶
- Parameters:
arg__1 – 整数
属性
doubleClickIntervalᅟ
的设置器。如果
enable
为 true,则启用 UI 效果effect
,否则将不使用该效果。将默认的应用程序字体更改为
font
。如果传递了className
,则更改仅适用于继承className
的类(由QObject::inherits()报告)。在应用程序启动时,默认字体取决于窗口系统。它可能会根据窗口系统版本和区域设置而变化。此函数允许您覆盖默认字体;但覆盖可能不是一个好主意,因为例如,某些区域设置需要超大字体来支持其特殊字符。
警告
不要将此函数与Qt样式表一起使用。应用程序的字体可以使用“font”样式表属性进行自定义。要为所有QPushButton设置粗体字体,请将应用程序的
styleSheet()
设置为“QPushButton
{ font: bold }”另请参阅
- static setKeyboardInputInterval(arg__1)¶
- Parameters:
arg__1 – 整数
属性
keyboardInputIntervalᅟ
的设置器。将应用程序的调色板更改为
palette
。如果传递了
className
,则更改仅适用于继承className
的小部件(如QObject::inherits()所报告的)。如果className
留空为0,则更改会影响所有小部件,从而覆盖任何先前设置的特定类调色板。调色板可以根据当前GUI风格在
polish()
中更改。警告
不要将此函数与Qt样式表一起使用。使用样式表时,可以使用“color”、“background-color”、“selection-color”、“selection-background-color”和“alternate-background-color”来自定义小部件的调色板。
注意
某些样式并不使用调色板进行所有绘制,例如,如果它们使用了原生主题引擎。Windows Vista 和 macOS 样式就是这种情况。
- static setStartDragDistance(l)¶
- Parameters:
l – 整数
另请参阅
属性
startDragDistanceᅟ
的设置器。- static setStartDragTime(ms)¶
- Parameters:
ms – 整数
另请参阅
属性
startDragTimeᅟ
的设置器。警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
将应用程序的GUI样式设置为
style
。样式对象的所有权转移给QApplication
,因此QApplication
将在应用程序退出或设置新样式且旧样式仍然是应用程序对象的父对象时删除样式对象。示例用法:
QApplication.setStyle(QStyleFactory.create("Fusion"))
当切换应用程序样式时,调色板会重置为初始颜色或系统默认值。这是必要的,因为某些样式需要调整调色板以完全符合样式指南。
在设置调色板之前设置样式,即在创建
QApplication
之前,将导致应用程序使用standardPalette()
作为调色板。警告
目前不支持为自定义的
QStyle
子类使用Qt样式表。我们计划在未来的某个版本中解决这个问题。- static setStyle(style)
- Parameters:
style – str
- Return type:
这是一个重载函数。
从
QStyleFactory
请求一个QStyle
对象用于style
。字符串必须是
keys()
之一,通常是“windows”、“windowsvista”、“fusion”或“macos”之一。样式名称不区分大小写。如果传递了未知的
style
,则返回None
,否则返回的QStyle
对象将设置为应用程序的GUI样式。警告
为了确保应用程序的样式设置正确,最好在
QApplication
构造函数之前调用此函数,如果可能的话。- setStyleSheet(sheet)¶
- Parameters:
sheet – 字符串
另请参阅
属性
styleSheetᅟ
的设置器。- static setWheelScrollLines(arg__1)¶
- Parameters:
arg__1 – 整数
另请参阅
属性
wheelScrollLinesᅟ
的设置器。- static startDragDistance()¶
- Return type:
整数
属性
startDragDistanceᅟ
的获取器。- static startDragTime()¶
- Return type:
整数
另请参阅
属性
startDragTimeᅟ
的获取器。返回应用程序的样式对象。
另请参阅
- styleSheet()¶
- Return type:
字符串
另请参阅
属性
styleSheetᅟ
的获取器。这是一个重载函数。
返回位于点 (
x
,y
) 的顶层小部件;如果没有这样的小部件,则返回 0。警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
返回应用程序中的顶级小部件(窗口)列表。
注意
一些顶级小部件可能会被隐藏,例如如果没有当前显示的工具提示,则工具提示可能会被隐藏。
示例:
def showAllHiddenTopLevelWidgets(): topLevelWidgets = QApplication.topLevelWidgets() for widget in topLevelWidgets: if widget.isHidden(): widget.show()
- static wheelScrollLines()¶
- Return type:
整数
属性
wheelScrollLinesᅟ
的获取器。返回位于全局屏幕位置
point
的小部件,如果该位置没有 Qt 小部件,则返回None
。这个函数可能会很慢。
- static widgetAt(x, y)
- Parameters:
x – 整数
y – 整数
- Return type:
这是一个重载函数。
返回位于全局屏幕位置 (
x
,y
) 的小部件,如果没有 Qt 小部件在那里,则返回None
。