Просто чтобы прояснить это, прежде чем я начну.
У меня та же проблема, что изложена в этом вопросе: Tkinter: создание произвольного количества кнопок / виджетов
но принятый ответ не работает для меня.
Это мой код:
import os
try:
from tkinter import *
except ImportError:
from Tkinter import *
from subprocess import call
root = Tk()
root.wm_attributes("-fullscreen", "true")
root.config(background = "#FFFFFF")
backIMG = PhotoImage(file="b.gif")
usbIMG = PhotoImage(file="u.gif")
usbAuswahlIMG = PhotoImage(file="ua.gif")
downloadsIMG = PhotoImage(file="d.gif")
downloadsAuswahlIMG =
PhotoImage(file="da.gif")
menuFrame = Frame(root, width=200, height=600, bg="#FFFF00")
menuFrame.grid(row=0, column=0, padx=10, pady=3)
def goBack():
#os.system('python gui.py')
root.destroy()
def selectUSB():
downloadsButton.config(image=downloadsIMG)
usbButton.config(image=usbAuswahlIMG)
def selectDownloads():
usbButton.config(image=usbIMG)
downloadsButton.config(image=downloadsAuswahlIMG)
i = 0
buttons = dict()
for file in os.listdir('/home/pi/Downloads'):
if file.endswith(".mp3") or file.endswith(".wav"):
buttons[i] = Button(contentFrame, text=file, width=60, font=("Sans", 15), command=lambda a=i: playDL(a).grid(row=i, column=0))
i = i + 1
print()
def playDL(index):
print (index)
usbButton = Button(menuFrame, image=usbIMG,
command=selectUSB)
usbButton.pack()
downloadsButton = Button(menuFrame, image=downloadsIMG,
command=selectDownloads)
downloadsButton.pack()
stopButton = Button(menuFrame, image=backIMG,
command=goBack)
stopButton.pack()
contentFrame = Frame(root, width=760, height=594, bg='#FFFFFF')
contentFrame.grid(row=0, column=1, padx=13, pady=3)
root.mainloop()
На другой пост, один предложил добавить этот код здесь:
buttons = dict()
for k in range(len(info)):
buttons[k] = Button(top, text=info[k], command=lambda a=k: my_function(buttons[a]))
что я сделал и изменил здесь и там, чтобы соответствовать моему коду.
Проблема в том, что теперь кнопки вообще не отображаются в фрейме контента. Он по-прежнему работает через цикл, но кнопок не видно. Сначала у меня было только это:
for file in os.listdir('/home/pi/Downloads'):
if file.endswith(".mp3") or file.endswith(".wav"):
Button(contentFrame, text=file, width=60, font=("Sans", 15), command=lambda: playDL(i).grid(row=i, column=0))
i = i + 1
и все кнопки делали то же самое, но были видны.
Я начал программировать на python вчера, но я хорошо знаком с Java и Visual C #, поэтому у меня есть общее представление о том, что я делаю (вроде)