我有一个问题已经存在了一段时间。
让我们说我用Qt设计器设计了我的GUI,所以我会将.iu
文件转换成.py文件,如下所示:
pyuic4 mainGUI.ui -o mainGUI.py
所以现在,如果我这样做,我就拥有了访问小部件等等所需的一切
main.py文件:
from PyQt4 import QtGui
from mainGUI import Ui_mainGUI
class MyMainWindow(Ui_mainGUI):
def __init__(self, *args, **kwargs)
super(MyMainWindow, self).__init__(*args, **kwargs)
self.setupUi(self)
我现在的问题是,如果我在另一个worker class
文件中拥有所有我所谓的.py
,我如何将所有这些整合在一起以使我的GUI显示结果,或显示进度等所有这些thigs。
一个简单快速的工人类示例:
myworker.py文件:
import numpy as np
import pandas as pd
class worker():
def sum2numbers(self, a,b):
return a+b
....
....
class MyMainWindow
应该继承吗?我有点困惑:
答案 0 :(得分:1)
只需将您的工人类模块导入主文件并在那里使用它。您的MyMainWindow
类也应继承QMainWindow
,以便您可以访问所有底层Qt窗口小部件方法。使用您的示例:
from PyQt4 import QtGui
from mainGUI import Ui_mainGUI
from myworker import worker
class MyMainWindow(QMainWindow, Ui_mainGUI):
def __init__(self, *args, **kwargs)
super(MyMainWindow, self).__init__(*args, **kwargs)
self.setupUi(self)
答案 1 :(得分:1)
This Link here很好地解释了将Ui文件与主工作文件连接的方法,其中YourFormName
是您从UI创建的文件的名称。我个人更喜欢该链接中声明的single inheritence
,然后您可以随时更改您的Ui文件,而不会影响您的主工作文件。这就是我的工作。
from Your_ui import Ui_MainWindow
import sys
from PyQt4 import QtGui,QtCore
class Worker(QtGui.QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
self.ui = Ui_MainWindow() #Creating your Ui object
self.ui.setupUi(self) #calling your Ui.
#use a function if you want to modify your ui that designer doesn't provide....
self.my_worker_stuff()
def my_worker_stuff(self):
#Now you can access your Ui widgets using the 'self.ui'
#for eg.
myText = self.ui.lineEdit.text()
以下是__main__
的外观
if __name__== '__main__':
app = QtGui.QApplication(sys.argv)
worker = Worker()
worker.show()
sys.exit(app.exec_())