将另一个类设置为QPushButton父级

时间:2018-08-25 20:18:43

标签: python pyqt4 qpushbutton

我正在尝试根据从txt文件获取的数据创建按钮。而且我需要在不同的类(按钮)中创建每个按钮,因为要执行的代码将被设置为为所有按钮加载的最后一个。但是,当我创建按钮并将父对象设置为 GUI 时,id崩溃并说Window是未定义的,尽管它是在创建按钮之前创建的。 甚至我的IDE都没有说GUI未使用(我在未设置样式表的情况下尝试了它)。 **编辑:**我的txt文件:名称为paths.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_())

0 个答案:

没有答案