1
我使用QT Designer並使用它創建我的GUI。要啓動主程序,我用這個代碼:直接從UI文件加載QDialog?
import sys
from PyQt4 import uic, QtGui, QtCore
from PyQt4.QtGui import *
from PyQt4.QtCore import *
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
def _fromUtf8(s):
return s
try:
_encoding = QtGui.QApplication.UnicodeUTF8
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig)
def main():
app = QtGui.QApplication(sys.argv)
myWindow = MyWindowClass()
myWindow.show()
app.exec_()
main_dialog = uic.loadUiType("GUI.ui")[0]
class MyWindowClass(QtGui.QMainWindow, main_dialog):
def __init__(self, parent=None):
QtGui.QMainWindow.__init__(self, parent)
self.setupUi(self)
if __name__ == "__main__":
main()
所以這條線main_dialog = uic.loadUiType("GUI.ui")[0]
我定義我創建的UI-文件。
現在,當我使用QDialogs時,我只通過首先創建它們,然後將它們轉換爲Python代碼(使用PYUIC4),然後在我的主python文件中實現代碼並以這種方式運行QDialog來完成它們:
def NameOfDialog(self):
dialog = Qdialog()
dialog.ui = NameOfDialogClass()
dialog.ui.setupUi(dialog)
dialog.exec_()
明顯的問題是,每當我做任何微小的變化給GUI我不得不再次去完成整個過程(轉換,並把代碼中的主代碼並注意不要刪除任何其他行,我添加並需要維護)。
我確定有一種解決方案可以直接引用QDialog的UI文件,但是如何?我想同樣的方法就像我的主窗口,但沒有成功:(做
感謝
編輯:
以下是我在一個小例子,都試過了,但它不工作。我是什麼失蹤
#-*- encoding: UTF-8 -*-
import sys
from PyQt4 import uic, QtGui, QtCore
from PyQt4.QtGui import *
from PyQt4.QtCore import *
try:
_fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
def _fromUtf8(s):
return s
try:
_encoding = QtGui.QApplication.UnicodeUTF8
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig)
def main():
app = QtGui.QApplication(sys.argv)
myWindow = MyWindowClass()
myWindow.show()
app.exec_()
main_dialog = uic.loadUiType("GUI.ui")[0]
TestQDialog = uic.loadUiType("Dialog.ui")[0]
class QDialogClass(object, TestQDialog):
def __init__(self, parent=None):
QtGui.QDialog.__init__(self, parent)
self.setupUi(self)
class MyWindowClass(QtGui.QMainWindow, main_dialog):
def __init__(self, parent=None):
QtGui.QMainWindow.__init__(self, parent)
self.setupUi(self)
self.btn_close.clicked.connect(self.dialog)
def dialog(self):
dialog = Qdialog()
dialog.ui = QDialogClass()
dialog.ui.setupUi(dialog)
dialog.exec_()
if __name__ == "__main__":
main()
請發佈您嘗試的對話框代碼,哪些不起作用。答案中的所有其他代碼都是無關緊要的。 – ekhumoro
@ekhumoro我添加了我試過的代碼樣本,但肯定不能工作:( – Khaled