Python guidata windows模式?

时间:2015-02-26 13:07:44

标签: python

我正在使用python guidata(https://code.google.com/p/guidata/)包来获取用户输入。问题是gui窗口没有​​出现在顶部。它隐藏在其他窗户下面。我认为应该有一些我可以传递的窗口模态参数。我找不到他们。 不确定它是否相关,但我没有直接运行python脚本,我正在运行的基本上是一个运行的bat文件

python.exe myscript.py

我希望窗口位于顶部(首选)或窗口为模态(下一个最佳解决方案)

后来添加: 给出一个示例代码我只是在guidata网站上粘贴了一个例子。我的代码或多或少相似

import guidata
_app = guidata.qapplication() # not required if a QApplication has already been created

import guidata.dataset.datatypes as dt
import guidata.dataset.dataitems as di

class Processing(dt.DataSet):
    """Example"""
    a = di.FloatItem("Parameter #1", default=2.3)
    b = di.IntItem("Parameter #2", min=0, max=10, default=5)
    type = di.ChoiceItem("Processing algorithm",
                         ("type 1", "type 2", "type 3"))

param = Processing()
param.edit()

行param.edit()显示gui但不在顶部

1 个答案:

答案 0 :(得分:0)

来自the docsthis answer

from guidata.qt.QtGui import QMainWindow, QSplitter
# snip a lot of code
class MainWindow(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(self)
# more snipping

if __name__ == '__main__':
    from guidata.qt.QtGui import QApplication
    import sys
    app = QApplication(sys.argv)
    window = MainWindow()
    window.show()
    # these two lines presumably will bring the window to the front
    window.setWindowState(window.windowState() & ~QtCore.Qt.WindowMinimized | QtCore.Qt.WindowActive)

    # this will activate the window
    window.activateWindow()
    sys.exit(app.exec_())

我不确定是否需要这些额外的行 - 我不熟悉PyQT,但它看起来应该做你想要的。