Python QLineEdit未使用setText更新

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

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

self.browse\u file.setText(“safa”)


但在设置文件中不起作用

--更新--

在:
self.lineEdit.setText(“safa”)
之后,我在QLineEdit中看不到任何文本。

print self.lineEdit.text()
输出文本“safa”

您不应该按照以下几行初始化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()

我一直都是这样做的,工作起来很有魅力。

问题出在您的
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
对话框的所有设置代码都已在其
\uuuu init\uuuu
方法中,因此您只需创建它的实例

附言:


main窗口中.\uuuu init\uuuu
Ui\u主窗口.\uuuu init\uuuuu(self)
,在
设置窗口中.\uuuu init\uuuuu
Ui\u对话框.\uuuu init\uuuuuu(self)
。这些行没有任何用处,因为
Ui.*
类只是
object
的简单子类。所以这两行可以删除。

什么是“不起作用”呢?你能给我们看一些代码吗?我的意思是,我在GUI的QLineEdit中看不到新字符串“safa”,但是如果我打印
self.browse\u file.text()
,我可以在终端中看到“safa”。更多的代码可能会对这里有所帮助完整的示例:大多数人(包括我)不会下载一个存档来跟踪你在其中遇到的问题。你可以考虑提取一个完整的你的问题的最小的例子(从你的问题,我会说20线…)谢谢!这解决了我一个月的问题!很抱歉我的误解:\
    def buttonclicked(self):
        dialog = settings.SettingsWindow()
        dialog.exec_()