从pyqt获取返回值

时间:2019-08-16 14:33:49

标签: python pyqt

我正在尝试创建一个PYQT UI,用户可以在其中输入2个值,以便可以在不同文件或方法中的计算中使用这些值。如何获得这些要使用的值的返回?这是我的代码(我尝试过在线使用其他示例):

from PyQt5.QtWidgets import *

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

        self.grid = QGridLayout(self)
        self.grid.setSpacing(10)

         self.LenLabel = QLabel('Please enter Length:')
         self.grid.addWidget(self.LenLabel, 1, 0, 1, 1)
         self.WidLabel = QLabel('Please enter Width:')
         self.grid.addWidget(self.WidLabel, 2, 0, 1, 1)

         self.Length = QLineEdit(self)
         self.grid.addWidget(self.Length, 1, 1, 1, 1)
         self.Width = QLineEdit(self)
         self.grid.addWidget(self.Width, 2, 1, 1, 1)

         self.submit = QPushButton('Submit', clicked=self.EnterButton)
         self.grid.addWidget(self.submit, 4, 1, 1, 1)

     def EnterButton(self):
         a = self.Length.text()
         b = self.Width.text()
         return self.a, self.b

来自主文件:

from GetLength import *
import sys

app = QApplication(sys.argv)
edit_params__QD = GetLength()
edit_params__QD.exec_()
if edit_params__QD.result() == 0:
    value1, value2 = edit_params__QD.EnterButton()
    print('Success!', value1, value2)

2 个答案:

答案 0 :(得分:1)

尝试一下:

import sys
from PyQt5.QtWidgets import *

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

        self.grid = QGridLayout(self)
        self.grid.setSpacing(10)

        self.LenLabel = QLabel('Please enter Length:')
        self.grid.addWidget(self.LenLabel, 1, 0, 1, 1)
        self.WidLabel = QLabel('Please enter Width:')
        self.grid.addWidget(self.WidLabel, 2, 0, 1, 1)

        self.Length = QLineEdit(self)
        self.grid.addWidget(self.Length, 1, 1, 1, 1)
        self.Width = QLineEdit(self)
        self.grid.addWidget(self.Width, 2, 1, 1, 1)

        self.submit = QPushButton('Submit', clicked=self.EnterButton)
        self.grid.addWidget(self.submit, 4, 1, 1, 1)

    def EnterButton(self):
        a = self.Length.text()
        b = self.Width.text()

        self.close()                                                 # +++
#        return self.a, self.b
        return a, b                                                  # +++

app = QApplication(sys.argv)
edit_params__QD = GetLength()
edit_params__QD.exec_()

if edit_params__QD.result() == 0:
    value1, value2 = edit_params__QD.EnterButton()
    print('Success!', value1, value2)

enter image description here

答案 1 :(得分:0)

您需要在按下dyn FnMut按钮时关闭对话框窗口,然后将Submit放入accept处理程序中:

clicked

然后修复 self.submit = QPushButton('Submit', clicked=self.accept) 以返回局部变量:

EnterButton

然后在呼叫者站点上,通过检查def EnterButton(self): a = self.Length.text() b = self.Width.text() return a, b 来检查对话框是否被关闭,是否可以接受:

result() == 1