平板电脑模式下Windows 10上的Python / PyQt5全屏应用程序

时间:2018-06-11 07:55:15

标签: windows python-3.x windows-10 pyqt5 pywin32

我在带有触摸屏设备的Windows 10上运行PyQt5应用程序,我需要全屏运行它(任务栏也必须在平板电脑模式下隐藏)。

在经典模式下,一切正常。 在平板电脑模式下,我有两个问题:

  1. 当我启动主窗口时,它有时会启动但启动屏幕显示在前台:我需要手动查看正在运行的应用程序并单击我的应用程序才能在屏幕上看到它。
  2. 在使用我的应用程序时,我可以单击按钮打开首选项对话框并打开它,结果与上面相同:开始屏幕显示在前台,我需要手动查看正在运行的应用程序并单击我的应用程序为了在屏幕上看到它。
  3. 这是非常讨厌的行为。

    基本上我所做的是主窗口启动时的showFullscreen()和对话框上的dialog.exec_(),以便将其显示为模态对话框。

    我试图寻找帮助以解决这个问题,但我发现没有什么有用的。我读到其他人有类似的行为,但我找不到解决方案。

    您是否有关于如何在Python 3.5中处理此问题的建议?

    提前感谢您的任何反馈。

1 个答案:

答案 0 :(得分:0)

显然,我能够找到导致Windows 10在平板电脑模式下使窗口最小化的原因,所以我决定在这里编写它,以希望对其他人有帮助。

这个问题(至少在我的特定情况下)与以下事实有关:某些QWidget(也是扩展QWidget的自定义类),没有在构造函数中传递给定的父级(即parent = None)。 由于我是在QWidget's documentation page中找到的,所以:

  

没有父窗口小部件的窗口小部件始终是一个独立的窗口(顶层窗口小部件)。

我解析了代码,并将父级设置为那些QWidget,现在看来问题已经解决了。

作为旁注:我发现我还必须在构造函数中将父级设置为某些(但不一定是全部)QWidget的子类(即QScrollArea,QScrollWidget,QFrame等)。不知道为什么,但是在我看来,无论如何在构造函数中设置父代都是一种最佳实践,所以从现在开始我就这样。