我在Qt Designer中创建了一个简单的测试程序,允许您选择一个文件夹并在窗口中显示其内容。它看起来像这样:
我已成功将.ui
文件转换为.py
。接下来,这是我运行程序的代码,恰当地命名为main.py
:
from PyQt4 import QtGui
import sys
import design
import os
class ExampleApp(QtGui.QMainWindow, design.Ui_MainWindow):
def _init_(self):
super(self._class_, self)._init_()
self.setupUI(self)
self.btnBrowse.clicked.connect(self.browse_folder)
def browse_folder(self):
self.listWidget.clear()
directory = QtGui.QFileDialog.getExistingDirectory(self,"Pick a Folder")
if directory:
for file_name in os.listdir(directory):
self.listWidget.addItem(file_name)
def main():
app = QtGui.QApplication(sys.argv)
form = ExampleApp()
form.show()
app.exec_()
if __name__ == '__main__':
main()
在我的命令提示符下,我运行以下代码:
python main.py
我做错了吗?为什么我的程序不应该以它应该的方式出现?任何帮助表示赞赏!
答案 0 :(得分:1)
这些行错了:
def _init_(self):
super(self._class_, self)._init_()
相反,你需要像:
def __init__(self, parent=None):
super(ExampleApp, self).__init__(parent)
注意双下划线,不同的超级参数,并将parent
传递给超类。我现在无法对此进行测试,但它应该更接近于工作。
通过错误地命名您的__init__
方法,它永远不会被调用。这就解释了为什么你得到一个窗口而不是你设计的窗口。