QLineEdit未使用setText进行更新

时间:2014-01-25 06:39:26

标签: python qt pyqt

我有一个带有两个窗口的程序,主要和设置 当我在settings.py文件中的QLineEdit上运行setText时,新字符串不在GUI中,我可以在setText代码之前看到字符串。
当我在Qt Designer生成的settingsUI文件中放入相同的代码时,它可以工作。但是在settings.py中没有。
设置文件是包含SettingsWindow类的文件,我可以将真正的python代码放入其中 settingsUI文件是包含GUI的文件,我使用pyuic4(或pyuic5)生成它 此代码适用于settingsUI文件:

    self.browse_file.setText("safa")

但是不能在设置文件中工作。

- UPDATE -

import sys
from PyQt4 import QtCore, QtGui
from settingsui import Ui_Dialog
class SettingsWindow(QtGui.QDialog, Ui_Dialog):
    def __init__(self):
        QtGui.QDialog.__init__(self)
        Ui_Dialog.__init__(self)
        self.setupUi(self)
        self.lineEdit.setText("safa")
        print self.lineEdit.text()

之后:self.lineEdit.setText("safa"),我在QLineEdit中看不到任何文字 print self.lineEdit.text()输出文本“safa”

2 个答案:

答案 0 :(得分:3)

不应该按照以下几行初始化UI:

class SettingsWindow(QtGui.QDialog):
    def __init__(self, parent = None):
        QtGui.QDialog.__init__(self, parent)
        self.ui = Ui_Dialog()
        self.ui.setupUi(self)
        self.ui.lineEdit.setText("safa")
        print self.ui.lineEdit.text()

这就是我一直这样做的方式,就像魅力一样。

答案 1 :(得分:2)

问题出在您的mainwind.py文件中。

您尝试使用以下方法打开对话框:

    def buttonclicked(self):
        Dialog = QtGui.QDialog()
        u = settings.SettingsWindow()
        u.setupUi(Dialog)
        Dialog.exec_()

文本未显示的原因是因为您正在创建两个对话框。第二个(名为u)已调用setText(),但随后被丢弃而未被显示。

您的方法应该如下所示:

    def buttonclicked(self):
        dialog = settings.SettingsWindow()
        dialog.exec_()

SettingsWindow对话框的所有设置代码都已在其__init__方法中,因此您需要做的就是创建它的实例。

PS:

MainWindow.__init__ Ui_MainWindow.__init__(self)SettingsWindow.__init__ Ui_Dialog.__init__(self) Ui_*object这些行没有任何用处,因为{{1}}类只是{{1}}的简单子类。所以这两行可以删除。