导入可以将值保存到另一个脚本中的 PyQt-GUI
Posted
技术标签:
【中文标题】导入可以将值保存到另一个脚本中的 PyQt-GUI【英文标题】:Importing a PyQt-GUI that can save values into another script 【发布时间】:2016-05-30 08:48:18 【问题描述】:我使用 QtDesigner 创建了一个 GUI,将 .ui 转换为 .py 并为它创建了一个包装器。 GUI 由 3 个 DoubleSpinBox、两个复选框、OK、Cancel 和一些标签组成。 ui 文件(称为 gyroidUI.py)有点长,所以我将在此省略。包装器如下所示:
# gyroidUI_module.py
import sys
from PyQt4.QtGui import QApplication, QDialog
from gyroidUI import Ui_Form
class AppWindow(QDialog):
def __init__(self):
super().__init__()
# QDialog.__init__(self)
self.ui = Ui_Form()
# Ui_Form.__init__(self)
self.ui.setupUi(self)
self.show()
self.ui.OKButton.clicked.connect(self.OKButton_click)
self.ui.CancelButton.clicked.connect(self.CancelButton_click)
def OKButton_click(self):
fill_ratio = self.ui.fill_ratio_box.value()
contour_value = self.ui.contour_value_box.value()
contours = self.ui.contours_box.value()
use_contour_value = False
if self.ui.check_contour_value.checkState() != 0:
use_contour_value = True
closed_surface = False
if self.ui.check_closed_surface.checkState() != 0:
closed_surface = True
self.accept()
print(fill_ratio, contour_value, contours, use_contour_value, closed_surface)
return fill_ratio, contour_value, contours, use_contour_value, closed_surface
def CancelButton_click(self):
self.reject()
raise InterruptedError("Program was cancelled by the user.")
sys.exit(app.exec_())
if __name__ == "__main__":
app = QApplication(sys.argv)
w = AppWindow()
w.show()
sys.exit(app.exec_())
包装器本身工作得很好。当我执行文件时,GUI 会弹出,我可以设置 3 个值并单击两个复选框。 OK 和 Cancel 似乎也可以正常工作。
我的问题:如何将其导入另一个脚本,然后我希望对话将变量 fill_ratio, contour_value, contours, use_contour_value, closed_surface
与相应的值一起保存?
我试过了
import gyroidUI_module
app = gyroidUI_module.AppWindow()
app.show()
# here comes the rest of my program where I want to use the GUI input values
但是窗口只弹出一秒钟,关闭并且程序完成而不执行我的脚本的其余部分。这是重要的部分:我希望在 GUI 之后发生一些事情(一些 mayavi
和 vtk
相关的事情)!
感谢您对此的任何帮助!
【问题讨论】:
【参考方案1】:我好像找到了答案:
app = gyroidUI_module.AppWindow()
app.show()
result = app.exec_()
if result == 1:
fill_ratio = app.ui.fill_ratio_box.value()
contour_value = app.ui.contour_value_box.value()
contours = int(app.ui.contours_box.value())
if app.ui.check_contour_value.checkState() != 0:
use_contour_value = True
else:
use_contour_value = False
if app.ui.check_closed_surface.checkState() != 0:
closed_surface = True
else:
closed_surface = False
我不确定为什么它会做它的工作,但至少我的代码现在可以工作。关于为什么我需要检查 if 子句中 result
的值的任何解释?
【讨论】:
以上是关于导入可以将值保存到另一个脚本中的 PyQt-GUI的主要内容,如果未能解决你的问题,请参考以下文章
通过使用 java 脚本,我如何将值从一个 html 页面传递到另一个 html 页面? [复制]