Menetapkan kelas lain sebagai induk QPushButton [duplikat]

Saya mencoba membuat tombol dari data yang saya dapatkan dari file txt. Dan saya perlu membuat setiap tombol individual di kelas (tombol) yang berbeda karena kode yang akan dieksekusi akan disetel ke yang terakhir dimuat untuk semuanya. Tetapi ketika saya membuat tombol dan mengatur induknya sebagai id GUI crash dan mengatakan Window tidak terdefinisi meskipun dibuat sebelum saya membuat tombol. Dan bahkan IDE saya tidak mengatakan bahwa GUI tidak digunakan (saya mencobanya tanpa mengatur stylesheet). **EDIT: ** file txt saya: namanya path.txt

/home/martin/Documents/Zabava/Hry/Eu4_v1.25.1/start.sh$$None$$Europa Universalis 4

/home/martin/TeamSpeak3-Client-linux_amd64/ts3client_runscript.sh$$None$$TeamSpeak 3

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Sat Aug 25 22:08:45 2018

@author: martin
"""


#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#Created on Sat Aug 25 17:24:33 2018
import sys
from PyQt4 import QtGui, QtCore
from subprocess import call

paths=[]
class window(QtGui.QMainWindow):
    def __init__(self):
        super(window,self).__init__()
        self.setGeometry(50,50,500,500)
        self.setWindowTitle(".sh Launcher")
        self.setWindowIcon(QtGui.QIcon("Icons/icon.png"))

        menu_add_app=QtGui.QAction("Add Application",self)
        menu_add_app.setShortcut("Ctrl+A")
        menu_add_app.triggered.connect(self.add_app)

        menu_quit_app=QtGui.QAction("Quit",self)
        menu_quit_app.setShortcut("Ctrl+Q")
        menu_quit_app.triggered.connect(self.quit_app)


        main_menu=self.menuBar()
        menu=main_menu.addMenu("Menu")
        menu.addAction(menu_add_app)
        menu.addAction(menu_quit_app)
        self.home()
    def build_apps(self):
        global paths
        print(len(paths))
        for i in range(len(paths)):
            self.data=paths[i]
            if self.data[1]=="None":
                self.data[1]=="Icons/icon.png"
            self.data.append(i)
            buttons(self.data)      
    def home(self):
        self.build_apps()
        #button_add = QtGui.QPushButton("Add Application",self)
        #button_add.clicked.connect(self.add_app)
        #button_quit=QtGui.QPushButton("Quit",self)
        #button_quit.clicked.connect(self.quit_app)


        #button_quit.move(110,0)
        self.show()
    def add_app(self):
        pass
    def quit_app(self):
        sys.exit()
class buttons():
    def __init__(self,data):
        super(buttons,self).__init__()
        self.data=data
        self.path=self.data[0]
        self.icon=QtGui.QIcon(self.data[1])
        self.text=self.data[2]
        self.pos=self.data[3]
        self.button=QtGui.QPushButton(self.icon,self.text,GUI) #I am setting GUI as the parrent
        self.button.clicked.connect(self.execute)
        self.button.move(0,self.pos*25+30)
        self.button.resize(500,25)    
    def execute(self):
        call(self.path)
def load_apps():
    global paths
    f=open("paths.txt","r")
    data=f.readlines()
    for i in range(len(data)):    
        paths.append(data[i].split("$$"))

app=QtGui.QApplication(sys.argv)
app.setStyle("plastique")
try:
    load_apps()
except:
    print("error")
GUI=window() #Here I create the GUI 
GUI.setStyleSheet("QPushButton {text-align:center;outline:0;margin-top:10,}")
sys.exit(app.exec_())

person Martin Pavelka    schedule 25.08.2018    source sumber
comment
ubah ke print(window) atau print(GUI)   -  person eyllanesc    schedule 25.08.2018
comment
di python huruf besar dan kecilnya berbeda   -  person eyllanesc    schedule 25.08.2018
comment
@eyllanesc Oh maaf saya mengubah kode di sini dan lupa menghapusnya (yang tidak seharusnya ada sehingga tidak menyebabkan kesalahan)   -  person Martin Pavelka    schedule 25.08.2018
comment
Saya mendapatkan jendela kosong, jelas karena saya tidak memiliki file .txt   -  person eyllanesc    schedule 25.08.2018
comment
ubah buttons(self.data) menjadi buttons(self.data, self), ubah class buttons(): def __init__(self, data): menjadi class buttons(): def __init__(self, data, parent):, ubah self.button = QtGui.QPushButton(self.icon,self.text, parent) menjadi self.button = QtGui.QPushButton(self.icon,self.text)   -  person eyllanesc    schedule 25.08.2018
comment
GUI ada setelah konstruktor selesai, dalam kasus Anda, Anda memanggil tombol di konstruktor, jadi tidak ada, saya sarankan membaca tentang OOP.   -  person eyllanesc    schedule 25.08.2018
comment
Ini berfungsi sekarang, terima kasih.   -  person Martin Pavelka    schedule 25.08.2018