我有一个带有两个窗口的程序,主要和设置
当我在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”
答案 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}}的简单子类。所以这两行可以删除。