Re: PyQt und Pyside mögen sich nicht?
Verfasst: Montag 22. Februar 2016, 19:10
An welcher Stelle wird die Referenz gehalten?
Seit 2002 Diskussionen rund um die Programmiersprache Python
https://www.python-forum.de/
Code: Alles auswählen
from uic_fix import loadUi, loadUiType
from PySide import QtGui, QtCore
import ui_rc
class TestWidget(QtGui.QWidget):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
UI_PATH = QtCore.QFile(":/ui_file/CustomDialog.ui")
UI_PATH.open(QtCore.QFile.ReadOnly)
self.ui_mdi = loadUi(UI_PATH), self
UI_PATH.close()
self.pushButton.clicked.connect(self.close)
if __name__ == '__main__':
app = QtGui.QApplication([])
w = TestWidget()
print type(w)
w.show()
app.exec_()
Traceback (most recent call last):
File "D:\Dan\Python\xarphus_project\examples\minimal_example\jerch_test_pyside.py", line 19, in <module>
w = TestWidget()
File "D:\Dan\Python\xarphus_project\examples\minimal_example\jerch_test_pyside.py", line 12, in __init__
self.ui_mdi = loadUi(UI_PATH), self
File "D:\Dan\Python\xarphus_project\examples\minimal_example\uic_fix.py", line 23, in loadUi
form_cls, base_cls = loadUiType(filename)
File "D:\Dan\Python\xarphus_project\examples\minimal_example\uic_fix.py", line 11, in loadUiType
with open(filename, 'r') as f:
TypeError: coercing to Unicode: need string or buffer, PySide.QtCore.QFile found
Code: Alles auswählen
import sys
from PyQt4.QtCore import QFile
from PyQt4.QtGui import QDialog, QApplication
from PyQt4.uic import loadUi
import ui_rc
class MyCustomDialog(QDialog):
def __init__(self, parent=None):
QDialog.__init__(self, parent)
UI_PATH = QFile(":/ui_file/CustomDialog.ui")
UI_PATH.open(QFile.ReadOnly)
self.ui_form = loadUi(UI_PATH, self)
UI_PATH.close()
def main():
app = QApplication(sys.argv)
window = MyCustomDialog()
window.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
Code: Alles auswählen
from PySide import QtGui, QtCore
from pyside_uicfix import loadUi, loadUiType
import ui_rc
class TestWidget(QtGui.QWidget):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
UI_PATH = QtCore.QFile(":/ui_file/CustomDialog.ui")
UI_PATH.open(QtCore.QFile.ReadOnly)
myWidget = loadUi(UI_PATH), self
UI_PATH.close()
layout = QtGui.QVBoxLayout()
layout.addWidget(myWidget)
self.setLayout(layout)
if __name__ == '__main__':
app = QtGui.QApplication([])
w = TestWidget()
w.show()
app.exec_()
EDIT: Wenn ich das Layout komplett weglasse, wird zwar ein Fenster erzeugt, jedoch nicht aus dem Kompilat, sondern ein eigenes. Denn es fehlen die beiden Widgets (Label und pushButton) in der *.ui-Datei.Traceback (most recent call last):
File "D:\Dan\Python\xarphus_project\examples\minimal_example\main_test_pyside.py", line 21, in <module>
w = TestWidget()
File "D:\Dan\Python\xarphus_project\examples\minimal_example\main_test_pyside.py", line 16, in __init__
layout.addWidget(myWidget)
TypeError: 'PySide.QtGui.QBoxLayout.addWidget' called with wrong argument types:
PySide.QtGui.QBoxLayout.addWidget(tuple)
Supported signatures:
PySide.QtGui.QBoxLayout.addWidget(PySide.QtGui.QWidget, int = 0, PySide.QtCore.Qt.Alignment = 0)
Code: Alles auswählen
from PySide import QtGui, QtCore, QtUiTools
from pyside_uicfix import loadUi, loadUiType
import ui_rc
class TestWidget(QtGui.QDialog):
def __init__(self, parent=None):
QtGui.QDialog.__init__(self, parent)
UI_PATH = QtCore.QFile(":/ui_file/CustomDialog.ui")
UI_PATH.open(QtCore.QFile.ReadOnly)
myWidget = loadUi(UI_PATH, self)
UI_PATH.close()
if __name__ == '__main__':
app = QtGui.QApplication([])
w = TestWidget()
w.show()
app.exec_()
Code: Alles auswählen
from PySide import QtGui, QtCore, QtUiTools
from pyside_uicfix import loadUi, loadUiType
import ui_rc
class TestWidget(QtGui.QDialog):
def __init__(self, parent=None):
QtGui.QDialog.__init__(self, parent)
UI_PATH = QtCore.QFile(":/ui_file/CustomDialog.ui")
UI_PATH.open(QtCore.QFile.ReadOnly)
self.myWidget = loadUi(UI_PATH, self)
UI_PATH.close()
self.myWidget.pushButton.clicked.connect(self.close)
if __name__ == '__main__':
app = QtGui.QApplication([])
w = TestWidget()
w.show()
app.exec_()
Traceback (most recent call last):
File "D:\Dan\Python\xarphus_project\examples\minimal_example\main_test_pyside.py", line 19, in <module>
w = TestWidget()
File "D:\Dan\Python\xarphus_project\examples\minimal_example\main_test_pyside.py", line 15, in __init__
self.myWidget.pushButton.clicked.connect(self.close)
AttributeError: 'TestWidget' object has no attribute 'pushButton'
Code: Alles auswählen
import sys
from PySide import QtCore, QtGui, QtUiTools
import ui_rc
class MyCustomDialog(QtGui.QDialog):
def __init__(self, parent=None):
QtGui.QDialog.__init__(self, parent)
loader = QtUiTools.QUiLoader()
file = QtCore.QFile(":/ui_file/CustomDialog.ui")
file.open(QtCore.QFile.ReadOnly)
myWidget = loader.load(file, self)
file.close()
layout = QtGui.QVBoxLayout()
layout.addWidget(myWidget)
self.setLayout(layout)
def main():
app = QtGui.QApplication(sys.argv)
window = MyCustomDialog()
window.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()