0
import sys
from PyQt4 import QtCore, QtGui, uic


class MainWindow(QtGui.QMainWindow):
     def __init__(self):
         QtGui.QMainWindow.__init__(self)

         self.Dynamic_log = uic.loadUi("Dynamic_log.ui")
         self.Dynamic_log.show()

         self.Main_Window = uic.loadUi("Main_Window.ui")
         self.Main_Window.hide()


         self.Dynamic_log.Continue_Button.clicked.connect(self.Continue2)

     def Continue2(self):

         ***self.Main_Window.addWidget(self.progress_label)***

         self.Main_Window.show()
         self.Dynamic_log.hide()



app = QtGui.QApplication(sys.argv)
window = MainWindow()
sys.exit(app.exec_())

三重星号是我卡住的地方。这行代码解释了我想要实现的目标,但却返回了一个错误。我想使用这种方法加载 .ui 文件,然后仍然能够在Main_Window中添加更多工具、进度条、标签按钮等。

我希望 .ui 文件以这种方式加载的原因是更容易布局和进行更改

我之后需要添加自定义工具的原因是因为我打算运行线程,数量由用户自行决定,并且必须制作重复工具以匹配线程数。

4

1 回答 1

0

在没有任何运气的情况下寻找答案后,我自己解决了这个问题。

在 pyqt4 Designer 文件 (Main_Window) 中创建 QVBoxLayout 后,我​​可以像不使用 uic.loadUi 导入方法一样引用它(在本例中是 ProgressThreads 的名称)。

工作代码如下,

class MyWindow(QWidget): 
    def __init__(self, *args): 
        QWidget.__init__(self, *args)

        self.Dynamic_log = uic.loadUi("Dynamic_log.ui")
        self.Dynamic_log.show()

        self.Main_Window = uic.loadUi("Main_Window.ui")
        self.Main_Window.hide()


        layout = self.Main_Window.ProgressThreads
        self.progress_label = QLabel(" ")
        layout.addWidget(self.progress_label)
        self.progress_label.setText('0%')




if __name__ == "__main__": 
    app = QtGui.QApplication(sys.argv)
    window = MyWindow() 
    sys.exit(app.exec_())

从 QMainWindow 更改为 QWidget 也是必要的

于 2013-05-18T10:00:14.293 回答