我正在尝试根据从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_())