Probleme mit QWidget

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
theliquidwave
User
Beiträge: 221
Registriert: Sonntag 1. Juni 2008, 09:08

Donnerstag 12. Juni 2008, 20:42

Hi.
Also mit einem QDialog geht alles wunderbar. Nun habe ich mir ein Widget gebastelt (MainWindow).
Dann kompiliert.

Ich finde einfach keinen Fehler.

Code von PyQt in Root/GUI/Haupt.py:

Code: Alles auswählen

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'C:\Python\xEditor\GUI\Haupt.ui'
#
# Created: Thu Jun 12 21:37:57 2008
#      by: PyQt4 UI code generator 4.4.2
#
# WARNING! All changes made in this file will be lost!

from PyQt4 import QtCore, QtGui

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(749,600)
        self.centralwidget = QtGui.QWidget(MainWindow)
        self.centralwidget.setGeometry(QtCore.QRect(0,21,749,560))
        self.centralwidget.setObjectName("centralwidget")
        self.Pad = QtGui.QTextEdit(self.centralwidget)
        self.Pad.setGeometry(QtCore.QRect(10,10,721,531))
        font = QtGui.QFont()
        font.setFamily("Courier New")
        font.setPointSize(10)
        self.Pad.setFont(font)
        self.Pad.setObjectName("Pad")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtGui.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0,0,749,21))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtGui.QStatusBar(MainWindow)
        self.statusbar.setGeometry(QtCore.QRect(0,581,749,19))
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", "xEditor", None, QtGui.QApplication.UnicodeUTF8))
Code von meiner Datei, die das Widget aufrufen sollte (in Root/Test.py):

Code: Alles auswählen

import sys
from PyQt4 import QtCore, QtGui
from GUI.Haupt import Ui_MainWindow as Fenster_Haupt

class Fenster(QtGui.QWidget, Fenster_Haupt):
	def __init__(self):
		QtGui.QWidget.__init__(self)
		self.setupUi(self)
		
		self.connect(self.Pad, QtCore.SIGNAL("textChanged()"), self.Pad_TextChanged)
	
	def Pad_TextChanged(self):
		print "Change"

App = QtGui.QApplication(sys.argv)
Dialog = Fenster()
Dialog.show()
sys.exit(App.exec_())
Hier die Fehlermeldung:

Code: Alles auswählen

Traceback (most recent call last):
  File "C:\Python\xEditor\Test.py", line 16, in <module>
    Dialog = Fenster()
  File "C:\Python\xEditor\Test.py", line 8, in __init__
    self.setupUi(self)
  File "C:\Python\xEditor\GUI\Haupt.py", line 26, in setupUi
    MainWindow.setCentralWidget(self.centralwidget)
AttributeError: setCentralWidget
Danke im Vorraus!

~ Chris
Grüßle.
lunar

Freitag 13. Juni 2008, 14:46

Wenn du im Designer ein ``QMainWindow`` erzeugst, dann solltest du auch von ``QMainWindow`` ableiten. Anderfalls darfst du dich nicht wundern, dass der GUI-Code Features erwartet, die ein einfaches Widget natürlich nicht bereitstellt.
theliquidwave
User
Beiträge: 221
Registriert: Sonntag 1. Juni 2008, 09:08

Freitag 13. Juni 2008, 19:52

Hui, nun gehts.
Danke.

~ Chris
Grüßle.
weissichnicht
User
Beiträge: 1
Registriert: Donnerstag 28. Mai 2009, 17:29

Donnerstag 28. Mai 2009, 17:34

Hi,
ich habe genau das gleich Problem doch nun gehts.
aber ich hab noch ein problem wenn ich nun das programm starten will kommt folgende fehlermeldung

Code: Alles auswählen

self.centralwidget.setSortingEnabled(__sortingEnabled)
AttributeError: setSortingEnabled

Code: Alles auswählen

from PyQt4 import QtCore, QtGui

class Ui_Search(object):
    def setupUi(self, Search):
        Search.setObjectName("Search")
        Search.resize(400, 325)
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap(":\Gif_016.gif"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        Search.setWindowIcon(icon)
        self.centralwidget = QtGui.QWidget(Search)
        self.centralwidget.setObjectName("centralwidget")
        self.suchbutton = QtGui.QPushButton(self.centralwidget)
        self.suchbutton.setGeometry(QtCore.QRect(207, 12, 75, 23))
        self.suchbutton.setObjectName("suchbutton")
        self.suchfeld = QtGui.QLineEdit(self.centralwidget)
        self.suchfeld.setGeometry(QtCore.QRect(68, 13, 133, 20))
        self.suchfeld.setObjectName("suchfeld")
        self.frame = QtGui.QFrame(self.centralwidget)
        self.frame.setGeometry(QtCore.QRect(20, 10, 34, 34))
        self.frame.setStyleSheet("background-image: url(:\Gif_016.gif);")
        self.frame.setFrameShape(QtGui.QFrame.StyledPanel)
        self.frame.setFrameShadow(QtGui.QFrame.Raised)
        self.frame.setObjectName("frame")
        self.treeWidget = QtGui.QTreeWidget(self.centralwidget)
        self.treeWidget.setGeometry(QtCore.QRect(20, 60, 111, 191))
        self.treeWidget.setObjectName("treeWidget")
        item = QtGui.QTreeWidgetItem(self.treeWidget)
        item = QtGui.QTreeWidgetItem(self.treeWidget)
        self.centralwidget.setSortingEnabled(__sortingEnabled)
        self.menubar = QtGui.QMenuBar(Search)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 400, 21))
        self.menubar.setObjectName("menubar")
        self.menuDatei = QtGui.QMenu(self.menubar)
        self.menuDatei.setObjectName("menuDatei")
        self.menuHilfe = QtGui.QMenu(self.menubar)
        self.menuHilfe.setObjectName("menuHilfe")
        Search.setMenuBar(self.menubar)
        self.statusbar = QtGui.QStatusBar(Search)
        self.statusbar.setObjectName("statusbar")
        Search.setStatusBar(self.statusbar)
        self.actionBeenden = QtGui.QAction(Search)
        self.actionBeenden.setObjectName("actionBeenden")
        self.actionHilfe = QtGui.QAction(Search)
        icon1 = QtGui.QIcon()
        icon1.addPixmap(QtGui.QPixmap(":\Png_001.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.actionHilfe.setIcon(icon1)
        self.actionHilfe.setObjectName("actionHilfe")
        self.action_ber = QtGui.QAction(Search)
        self.action_ber.setObjectName("action_ber")
        self.menuDatei.addAction(self.actionBeenden)
        self.menuHilfe.addAction(self.actionHilfe)
        self.menuHilfe.addAction(self.action_ber)
        self.menubar.addAction(self.menuDatei.menuAction())
        self.menubar.addAction(self.menuHilfe.menuAction())

        self.retranslateUi(Search)
        QtCore.QMetaObject.connectSlotsByName(Search)

    def retranslateUi(self, Search):
        Search.setWindowTitle(QtGui.QApplication.translate("Search", "MainWindow", None, QtGui.QApplication.UnicodeUTF8))
        self.suchbutton.setText(QtGui.QApplication.translate("Search", "Suchen", None, QtGui.QApplication.UnicodeUTF8))
        self.treeWidget.headerItem().setText(0, QtGui.QApplication.translate("Search", "Ergebniss", None, QtGui.QApplication.UnicodeUTF8))
        __sortingEnabled = self.treeWidget.isSortingEnabled()
        self.treeWidget.setSortingEnabled(False)
        self.treeWidget.topLevelItem(0).setText(0, QtGui.QApplication.translate("Search", "Test", None, QtGui.QApplication.UnicodeUTF8))
        self.treeWidget.topLevelItem(1).setText(0, QtGui.QApplication.translate("Search", "Test2", None, QtGui.QApplication.UnicodeUTF8))
        self.treeWidget.setSortingEnabled(__sortingEnabled)
        self.menuDatei.setTitle(QtGui.QApplication.translate("Search", "Datei", None, QtGui.QApplication.UnicodeUTF8))
        self.menuHilfe.setTitle(QtGui.QApplication.translate("Search", "Hilfe", None, QtGui.QApplication.UnicodeUTF8))
        self.actionBeenden.setText(QtGui.QApplication.translate("Search", "Beenden", None, QtGui.QApplication.UnicodeUTF8))
        self.actionHilfe.setText(QtGui.QApplication.translate("Search", "Hilfe", None, QtGui.QApplication.UnicodeUTF8))
        self.action_ber.setText(QtGui.QApplication.translate("Search", "Über", None, QtGui.QApplication.UnicodeUTF8))

Code: Alles auswählen

import sys 
from PyQt4 import QtGui, QtCore 
from fenster2 import Ui_Search as Dlg


class MeinDialog(QtGui.QMainWindow, Dlg): 
    def __init__(self): 
        QtGui.QMainWindow.__init__(self) 
        self.setupUi(self)

        
        self.connect(self.actionBeenden, 
                QtCore.SIGNAL("activated()"), self.onBeenden)
        
        

    def onSuche(self):
        print

    def onHilfe(self):
        print

    def on_ber(self):
        print
    
    def onBeenden(self):
        self.close()
                
app = QtGui.QApplication(sys.argv) 
dialog = MeinDialog() 
dialog.show()
app.exec_()
ich weiss nicht was daran falsch sein kann
ich hoffe mir kann jemand helfen[/code]
Antworten