Bonjour à tous,

Je tente de faire quelque chose de propre pour plus de lisibilité, pour le test, j'ai donc créer une UI avec Qt Creator et convertit en .py. Ça fonctionne bien, le problème vient des events qui ne se lance pas.

Voici mon UI :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
 
from PySide import QtGui, QtCore
 
 
class MainWindowUI(object):
 
    def __init__(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 600)
        MainWindow.setMinimumSize(QtCore.QSize(800, 600))
        MainWindow.setLocale(QtCore.QLocale(QtCore.QLocale.English, QtCore.QLocale.UnitedStates))
        self.centralWidget = QtGui.QWidget(MainWindow)
        self.centralWidget.setObjectName("centralWidget")
        self.gridLayout = QtGui.QGridLayout(self.centralWidget)
        self.gridLayout.setObjectName("gridLayout")
        self.verticalLayout = QtGui.QVBoxLayout()
        self.verticalLayout.setObjectName("verticalLayout")
        self.listView = QtGui.QListView(self.centralWidget)
        self.listView.setObjectName("listView")
        self.verticalLayout.addWidget(self.listView)
        self.horizontalLayout_2 = QtGui.QHBoxLayout()
        self.horizontalLayout_2.setObjectName("horizontalLayout_2")
        spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
        self.horizontalLayout_2.addItem(spacerItem)
        self.btnRemoveSelection = QtGui.QPushButton(self.centralWidget)
        self.btnRemoveSelection.setObjectName("btnRemoveSelection")
        self.horizontalLayout_2.addWidget(self.btnRemoveSelection)
        self.verticalLayout.addLayout(self.horizontalLayout_2)
        self.gridLayout.addLayout(self.verticalLayout, 0, 0, 1, 1)
        self.horizontalLayout = QtGui.QHBoxLayout()
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.lbl_output = QtGui.QLabel(self.centralWidget)
        self.lbl_output.setObjectName("lbl_output")
        self.horizontalLayout.addWidget(self.lbl_output)
        self.txtOutput = QtGui.QLineEdit(self.centralWidget)
        self.txtOutput.setEnabled(False)
        self.txtOutput.setReadOnly(False)
        self.txtOutput.setObjectName("txtOutput")
        self.horizontalLayout.addWidget(self.txtOutput)
        self.btnBrowse = QtGui.QPushButton(self.centralWidget)
        self.btnBrowse.setObjectName("btnBrowse")
        self.horizontalLayout.addWidget(self.btnBrowse)
        self.btnSsave = QtGui.QPushButton(self.centralWidget)
        self.btnSsave.setEnabled(False)
        self.btnSsave.setCheckable(False)
        self.btnSsave.setChecked(False)
        self.btnSsave.setAutoDefault(False)
        self.btnSsave.setDefault(False)
        self.btnSsave.setObjectName("btnSsave")
        self.horizontalLayout.addWidget(self.btnSsave)
        self.gridLayout.addLayout(self.horizontalLayout, 2, 0, 1, 1)
        spacerItem1 = QtGui.QSpacerItem(20, 10, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Minimum)
        self.gridLayout.addItem(spacerItem1, 1, 0, 1, 1)
        MainWindow.setCentralWidget(self.centralWidget)
        self.menuBar = QtGui.QMenuBar(MainWindow)
        self.menuBar.setGeometry(QtCore.QRect(0, 0, 800, 21))
        self.menuBar.setObjectName("menuBar")
        self.menu_File = QtGui.QMenu(self.menuBar)
        self.menu_File.setObjectName("menu_File")
        MainWindow.setMenuBar(self.menuBar)
        self.action_Quit = QtGui.QAction(MainWindow)
        self.action_Quit.setObjectName("action_Quit")
        self.menu_File.addAction(self.action_Quit)
        self.menuBar.addAction(self.menu_File.menuAction())
 
        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
 
        #self.btnBrowse.clicked.connect(self.test)
 
    # def test(self):
    #     print("test")
 
    def retranslateUi(self, MainWindow):
        MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", "Crawler", None, QtGui.QApplication.UnicodeUTF8))
        self.btnRemoveSelection.setText(QtGui.QApplication.translate("MainWindow", "Remove selection", None, QtGui.QApplication.UnicodeUTF8))
        self.lbl_output.setText(QtGui.QApplication.translate("MainWindow", "Output", None, QtGui.QApplication.UnicodeUTF8))
        self.btnBrowse.setText(QtGui.QApplication.translate("MainWindow", "...", None, QtGui.QApplication.UnicodeUTF8))
        self.btnSsave.setText(QtGui.QApplication.translate("MainWindow", "Save", None, QtGui.QApplication.UnicodeUTF8))
        self.menu_File.setTitle(QtGui.QApplication.translate("MainWindow", "&File", None, QtGui.QApplication.UnicodeUTF8))
        self.action_Quit.setText(QtGui.QApplication.translate("MainWindow", "&Quit", None, QtGui.QApplication.UnicodeUTF8))
        self.action_Quit.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+Q", None, QtGui.QApplication.UnicodeUTF8))
Si je décommente le signal self.btnBrowse.clicked.connect(self.test) et la méthode qui va avec ça fonctionne bien, le soucis c'est que je veux le signal dans mon autre classe qui hérite de l'UI, voici donc le code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 
#!/usr/bin/python
# -*- coding: utf-8 -*-
 
import sys
from PySide import QtGui, QtCore
from main_window_ui import MainWindowUI
 
 
class MainWindow(MainWindowUI):
 
    def __init__(self):
        super(MainWindow, self).__init__()
 
        self.btnBrowse.clicked.connect(self.test)
 
    def test(self):
        print('test')
 
 
def main():
 
    app = QtGui.QApplication(sys.argv)
    MainWindow = QtGui.QMainWindow()
    ui = MainWindowUI(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())
 
 
if __name__ == '__main__':
    main()
Et là ça ne fonctionne pas quand je clic sur le bouton concerné :/. Vous avez une idée du problème ?

D'ailleurs pour vous quel est le meilleur moyen de séparer l'UI du code de l'application ?

Merci d'avance.