2016-04-04 8 views
0

Ich habe das folgende benutzerdefinierte Widget mit Qt Designer erstellt:Wie kann ich ein benutzerdefiniertes Widget von Qt Designer mit PySide verwenden?

from PySide import QtCore, QtGui 

class Ui_Custom_Date_Range_Widget(object): 
    def setupUi(self, Custom_Date_Range_Widget): 
     Custom_Date_Range_Widget.setObjectName("Custom_Date_Range_Widget") 
     Custom_Date_Range_Widget.resize(341, 101) 
     Custom_Date_Range_Widget.setMinimumSize(QtCore.QSize(341, 0)) 
     Custom_Date_Range_Widget.setMaximumSize(QtCore.QSize(341, 110)) 
     Custom_Date_Range_Widget.setStyleSheet("background-color: rgb(255, 255, 255);") 
     self.widget = QtGui.QWidget(Custom_Date_Range_Widget) 
     self.widget.setGeometry(QtCore.QRect(6, 1, 330, 99)) 
     self.widget.setObjectName("widget") 
     self.custom_date_range_verticalLayout = QtGui.QVBoxLayout(self.widget) 
     self.custom_date_range_verticalLayout.setContentsMargins(5, 5, 5, 5) 
     self.custom_date_range_verticalLayout.setContentsMargins(0, 0, 0, 0) 
     self.custom_date_range_verticalLayout.setObjectName("custom_date_range_verticalLayout") 
     self.custom_date_range_label = QtGui.QLabel(self.widget) 
     font = QtGui.QFont() 
     font.setFamily("Segoe UI Symbol") 
     font.setPointSize(12) 
     font.setWeight(50) 
     font.setBold(False) 
     self.custom_date_range_label.setFont(font) 
     self.custom_date_range_label.setObjectName("custom_date_range_label") 
     self.custom_date_range_verticalLayout.addWidget(self.custom_date_range_label) 
     self.custom_date_range_date_edits_horizontalLayout = QtGui.QHBoxLayout() 
     self.custom_date_range_date_edits_horizontalLayout.setObjectName("custom_date_range_date_edits_horizontalLayout") 
     self.custom_date_range_from_label = QtGui.QLabel(self.widget) 
     font = QtGui.QFont() 
     font.setFamily("Segoe UI Light") 
     font.setPointSize(12) 
     self.custom_date_range_from_label.setFont(font) 
     self.custom_date_range_from_label.setObjectName("custom_date_range_from_label") 
     self.custom_date_range_date_edits_horizontalLayout.addWidget(self.custom_date_range_from_label) 
     self.custom_date_range_from_dateEdit = QtGui.QDateEdit(self.widget) 
     font = QtGui.QFont() 
     font.setFamily("Segoe UI Light") 
     font.setPointSize(12) 
     self.custom_date_range_from_dateEdit.setFont(font) 
     self.custom_date_range_from_dateEdit.setCalendarPopup(True) 
     self.custom_date_range_from_dateEdit.setObjectName("custom_date_range_from_dateEdit") 
     self.custom_date_range_date_edits_horizontalLayout.addWidget(self.custom_date_range_from_dateEdit) 
     self.custom_date_range_to_label = QtGui.QLabel(self.widget) 
     font = QtGui.QFont() 
     font.setFamily("Segoe UI Light") 
     font.setPointSize(12) 
     self.custom_date_range_to_label.setFont(font) 
     self.custom_date_range_to_label.setObjectName("custom_date_range_to_label") 
     self.custom_date_range_date_edits_horizontalLayout.addWidget(self.custom_date_range_to_label) 
     self.custom_date_range_to_dateEdit = QtGui.QDateEdit(self.widget) 
     font = QtGui.QFont() 
     font.setFamily("Segoe UI Light") 
     font.setPointSize(12) 
     self.custom_date_range_to_dateEdit.setFont(font) 
     self.custom_date_range_to_dateEdit.setCalendarPopup(True) 
     self.custom_date_range_to_dateEdit.setObjectName("custom_date_range_to_dateEdit") 
     self.custom_date_range_date_edits_horizontalLayout.addWidget(self.custom_date_range_to_dateEdit) 
     self.custom_date_range_verticalLayout.addLayout(self.custom_date_range_date_edits_horizontalLayout) 
     self.custom_date_range_buttons_horizontalLayout = QtGui.QHBoxLayout() 
     self.custom_date_range_buttons_horizontalLayout.setObjectName("custom_date_range_buttons_horizontalLayout") 
     self.custom_date_range_cancel_pushButton = QtGui.QPushButton(self.widget) 
     font = QtGui.QFont() 
     font.setFamily("Segoe UI Light") 
     font.setPointSize(12) 
     self.custom_date_range_cancel_pushButton.setFont(font) 
     self.custom_date_range_cancel_pushButton.setStyleSheet("QPushButton {border: 2px solid rgb(255, 255, 255);\n" 
" color: rgb(255, 255, 255);\n" 
"border-radius: 10px;\n" 
"pading: 0.8px;\n" 
"background-color: rgb(170, 0, 0);}\n" 
"\n" 
"QPushButton:checked {background-color: rgb(0, 170, 0);}\n" 
"\n" 
"QPushButton:hover {background-color: rgb(0, 170, 255); }") 
     self.custom_date_range_cancel_pushButton.setObjectName("custom_date_range_cancel_pushButton") 
     self.custom_date_range_buttons_horizontalLayout.addWidget(self.custom_date_range_cancel_pushButton) 
     self.custom_date_range_apply_pushButton = QtGui.QPushButton(self.widget) 
     font = QtGui.QFont() 
     font.setFamily("Segoe UI Light") 
     font.setPointSize(12) 
     self.custom_date_range_apply_pushButton.setFont(font) 
     self.custom_date_range_apply_pushButton.setStyleSheet("QPushButton {border: 2px solid rgb(255, 255, 255);\n" 
" color: rgb(255, 255, 255);\n" 
"border-radius: 10px;\n" 
"pading: 0.8px;\n" 
"background-color: rgba(0, 105, 234, 255);}\n" 
"\n" 
"QPushButton:checked {background-color: rgb(0, 170, 0);}\n" 
"\n" 
"QPushButton:hover {background-color: rgb(0, 170, 255); }") 
     self.custom_date_range_apply_pushButton.setObjectName("custom_date_range_apply_pushButton") 
     self.custom_date_range_buttons_horizontalLayout.addWidget(self.custom_date_range_apply_pushButton) 
     self.custom_date_range_verticalLayout.addLayout(self.custom_date_range_buttons_horizontalLayout) 

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

    def retranslateUi(self, Custom_Date_Range_Widget): 
     Custom_Date_Range_Widget.setWindowTitle(QtGui.QApplication.translate("Custom_Date_Range_Widget", "Form", None, QtGui.QApplication.UnicodeUTF8)) 
     self.custom_date_range_label.setText(QtGui.QApplication.translate("Custom_Date_Range_Widget", "Custom Date Range", None, QtGui.QApplication.UnicodeUTF8)) 
     self.custom_date_range_from_label.setText(QtGui.QApplication.translate("Custom_Date_Range_Widget", "FROM", None, QtGui.QApplication.UnicodeUTF8)) 
     self.custom_date_range_from_dateEdit.setDisplayFormat(QtGui.QApplication.translate("Custom_Date_Range_Widget", "dd-MMM-yyyy", None, QtGui.QApplication.UnicodeUTF8)) 
     self.custom_date_range_to_label.setText(QtGui.QApplication.translate("Custom_Date_Range_Widget", "TO", None, QtGui.QApplication.UnicodeUTF8)) 
     self.custom_date_range_to_dateEdit.setDisplayFormat(QtGui.QApplication.translate("Custom_Date_Range_Widget", "dd-MMM-yyyy", None, QtGui.QApplication.UnicodeUTF8)) 
     self.custom_date_range_cancel_pushButton.setText(QtGui.QApplication.translate("Custom_Date_Range_Widget", "Cancel", None, QtGui.QApplication.UnicodeUTF8)) 
     self.custom_date_range_apply_pushButton.setText(QtGui.QApplication.translate("Custom_Date_Range_Widget", "Apply", None, QtGui.QApplication.UnicodeUTF8)) 

ich das oben Widget in einem Menü verwenden möchten, und ich dachte, dies zu tun:

from custom_date_range_widget import Ui_Custom_Date_Range_Widget 

self.custom_date_range_menu = QtGui.QMenu(self) 
self.custom_date_range_menu.setFixedHeight(120) 
self.custom_date_range_menu.setFixedWidth(350) 

self.custom_date_range_widget = Ui_Custom_Date_Range_Widget(
self.custom_date_range_menu) 

self.custom_date_range_pushButton.setMenu(self.custom_date_range_menu) 

bekomme ich folgende Fehler :

self.custom_date_range_widget = Ui_Custom_Date_Range_Widget(self.custom_date_range_menu) 
TypeError: object.__new__() takes no parameters 

Antwort

0

wollen Sie die setupUI laufen, wenn Sie richtig eine neue Instanz erstellen? Wenn Sie eine neue Instanz einer Klasse erstellen die spezielle __init__ Methode aufgerufen wird, so dass Sie die object.__init__ außer Kraft setzen möchte, die über Eingabe Empfang beschwert und fügen Sie diese:

class Ui_Custom_Date_Range_Widget(object): 
    def __init__(self, Custom_Date_Range_Widget): 
     self.setupUI(Custom_Date_Range_Widget) 

    def setupUI ... 

oder möglicherweise umbenennen nur die setupUI-__init__