QlineEdit未使用SetText进行更新



我有一个带有两个窗口和设置的程序。
当我在settings.py文件中的qlineedit上运行setText时,新字符串不在gui中,我可以在setText代码之前看到字符串。
当我将相同的代码放在QT Designer生成的设置文件中时,它可以正常工作。但是在设置中。设置文件是包含settingswindow类的文件,我可以将真实的Python代码放入其中。
设置文件是包含GUI的文件,我用pyuic4(或pyuic5)生成了它。
此代码在设置文件中工作:

self.browse_file.setText("safa")

但在设置文件中不起作用。

- 更新 -

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"

问题在您的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的简单子类。因此可以删除这两条线。

您不应该沿着这些行初始化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()

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

最新更新