PyQt4 und QtDesigner

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
Oberst_Horst
User
Beiträge: 1
Registriert: Dienstag 30. Dezember 2014, 15:00

Hallo Leute,
ich habe Testweise(für den Designer) eine einfache GUI geschrieben, im Grunde soll in der Konsole ein Text ausgegeben werden wenn der Button gedrückt wird, das Problem ist das die Funktion beim Click anscheinend zweimal ausgeführt wird. Hier der Code:

Code: Alles auswählen

import sys
from PyQt4.QtGui import *
from PyQt4.QtCore import *
import ui_untitled
import time

class Test(QDialog, ui_untitled.Ui_Form):
    def __init__(self, parent = None):
        super(Test, self).__init__(parent)
        self.setupUi(self)
        
    def on_Button_clicked(self):
        print("yeah")
        
app = QApplication(sys.argv)
test = Test()
test.show()
app.exec_()
und hier der Code vom GUI selber (erstellt mit pyuic4):

Code: Alles auswählen

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

# Form implementation generated from reading ui file '/home/marius/PycharmProjects/untitled1/untitled.ui'
#
# Created: Mon Jan  5 15:34:42 2015
#      by: PyQt4 UI code generator 4.10.4
#
# WARNING! All changes made in this file will be lost!

from PyQt4 import QtCore, QtGui

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)

class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName(_fromUtf8("Form"))
        Form.resize(400, 300)
        self.Button = QtGui.QPushButton(Form)
        self.Button.setGeometry(QtCore.QRect(140, 130, 85, 26))
        self.Button.setObjectName(_fromUtf8("Button"))

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

    def retranslateUi(self, Form):
        Form.setWindowTitle(_translate("Form", "Form", None))
        self.Button.setText(_translate("Form", "PushButton", None))
danke schonmal im voraus

Oberst_Horst
Benutzeravatar
sparrow
User
Beiträge: 4211
Registriert: Freitag 17. April 2009, 10:28

Da steckt irgendwelche Magie drin.
Such mal nach Signale und Slots und verwende die.

Code: Alles auswählen

class Test(QDialog, ui_untitled.Ui_Form):
    def __init__(self, parent = None):
        super(Test, self).__init__(parent)
        self.setupUi(self)
        self.Button.clicked.connect(self.button_clicked)
        
    @pyqtSlot()
    def button_clicked(self):
        print "Signal Yeah!"
Antworten