Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python-如何在用户交互后从类返回值_Python_User Interface_Pyside_Pyside2 - Fatal编程技术网

Python-如何在用户交互后从类返回值

Python-如何在用户交互后从类返回值,python,user-interface,pyside,pyside2,Python,User Interface,Pyside,Pyside2,我有一个python问题,可能很简单,但我不知道怎么做。 基本上我想跑步: value = myUiClass().getValue() 如果我运行以下命令,它将直接返回None,而不是等待用户与UI交互的事件(我在这里没有定义,因为UI本身不是重点) 我想我缺少了一些东西来暂停这个过程,直到用户与UI交互 这是我想要的一个例子 from PySide2 import QtWidgets col = QtWidgets.QColorDialog.getColor() print col 有什

我有一个python问题,可能很简单,但我不知道怎么做。 基本上我想跑步:

value = myUiClass().getValue()
如果我运行以下命令,它将直接返回None,而不是等待用户与UI交互的事件(我在这里没有定义,因为UI本身不是重点)

我想我缺少了一些东西来暂停这个过程,直到用户与UI交互

这是我想要的一个例子

from PySide2 import QtWidgets
col = QtWidgets.QColorDialog.getColor()
print col
有什么想法吗


Thx

所以在深入研究之后。使用QDialog更容易,因为它有一个内置的方法

exec\uuz()将暂停该过程,直到从对话框(self.accept()self.reject())中获得答案为止

显然,使用QWidget也可以做到这一点,但过程有点不同,我还没有测试过。您实际上可以在QDialog参考中找到解释

from PySide2 import QtWidgets

class MyDialog(QtWidgets.QDialog):
    def __init__(self, parent=None):
        super(MyDialog, self).__init__(parent)

        self.valueToReturn = None

    def mousePressEvent(self, event):
        super(MyDialog, self).mousePressEvent(event)
        # get the value from UI and set it here
        self.valueToReturn = 5
        self.accept()

    @staticmethod
    def launch():
        dlg = MyDialog()
        r = dlg.exec_()
        if r:
            return dlg.valueToReturn
        else:
            return None

value = MyDialog.launch()
print value

你到底有什么问题?请出示证件。Python有很多很多UI框架。你在用什么?我用更多的信息编辑了最初的帖子,为了在事件发生之前获得数据,你必须使用信号和插槽,这是pyside的一项基本任务,我想你可以在任何基础教程中获得它。
from PySide2 import QtWidgets

class MyDialog(QtWidgets.QDialog):
    def __init__(self, parent=None):
        super(MyDialog, self).__init__(parent)

        self.valueToReturn = None

    def mousePressEvent(self, event):
        super(MyDialog, self).mousePressEvent(event)
        # get the value from UI and set it here
        self.valueToReturn = 5
        self.accept()

    @staticmethod
    def launch():
        dlg = MyDialog()
        r = dlg.exec_()
        if r:
            return dlg.valueToReturn
        else:
            return None

value = MyDialog.launch()
print value