python - PyQt 从 GUI 获取价值
问题描述
我已经使用构建了一个用户界面QtDesigner
,然后将其转换.ui
为.py
. 用户界面有不同comboBox
,textBox
一旦单击“运行”按钮,我想从中读取值。运行一个函数,然后在计算完成后填充用户界面的其他文本框。但是,当我更改 的值comboBox
并单击按钮时,脚本仍会读取初始值。
我用一个带有两个项目和一个文本框的组合框做了一个简单的 GUI。我正在尝试读取组合框文本并根据所选项目设置文本框的文本。
这是我用来运行GUI
和读取值的代码:
from PyQt4 import QtGui
from pyQt4 import QtCore
import sys
import GUI
class MyThread(QtCore.QThread):
updated = QtCore.pyqtSignal(str)
def run(self):
self.gui = Window()
name = self.gui.gui_Name.currentText()
print (name)
if name == 'Cristina':
country = 'Italy'
else:
country = 'Other'
self.updated.emit(str(1))
class Window(QtGui.QMainWindow, GUI.Home):
def __init__(self,parent = None):
super(Window,self).__init__(parent)
self.setupUi(self)
self._thread = MyThread(self)
self._thread.updated.connect(self.updateText)
self.update()
self.
self.pushButton.clicked.connect(self._thread.start)
def updateText(self,text):
self.Country.setText(str(country))
有什么想法吗?
谢谢
解决方案
如果您在运行中实现的代码是我认为您正在滥用线程的代码,因为有了currentTextChanged
信号就足够了,如下所示:
class Window(QtGui.QMainWindow, GUI.Home):
def __init__(self,parent = None):
super(Window,self).__init__(parent)
self.setupUi(self)
self.gui_Name.currentTextChanged.connect(self.onCurrentTextChanged)
def onCurrentTextChanged(self, text):
if if name == 'Cristina':
country = 'Italy'
else:
country = 'Other'
self.Country.setText(str(country))
另一方面,如果实际代码是一项耗时的任务,那么线程的使用就足够了。如果任务将QComboBox
按下按钮时的值作为参考,那么它将将该值建立为线程的属性,在您的情况下,您将在另一个线程中创建一个新的 GUI,而不是使用现有的 GUI:
class MyThread(QtCore.QThread):
updated = QtCore.pyqtSignal(str)
def run(self):
name = self.currentText
print(name)
if name == 'Cristina':
country = 'Italy'
else:
country = 'Other'
self.updated.emit(country)
class Window(QtGui.QMainWindow, GUI.Home):
def __init__(self,parent = None):
super(Window,self).__init__(parent)
self.setupUi(self)
self._thread = MyThread(self)
self._thread.updated.connect(self.Country.setText)
self.pushButton.clicked.connect(self.start_thread)
def start_thread(self):
self._thread.currentText = self.gui_Name.currentText()
self._thread.start()
推荐阅读
- java - 删除添加的按钮 Vaadin
- powershell - PowerShell 检查丢失的 ShadowCopies
- javascript - Google Publisher Tag 是否有槽渲染失败事件?
- chisel - 凿子:When-otherwise 子句在函数定义中不起作用
- java - 在android中创建像glide和picasso这样的类结构
- ansible - ansible 的 maven_artifact comman 在 Rundeck 中不起作用
- react-native - 如何在 React Native 中复制警告消息
- reactjs - 小时候如何使用 React Portal 发送图像?
- json - 如何从 POSTMAN 发送包含 xml 值的 Json?
- pyspark - 从 pyspark 中的数据帧中随机抽样