Мне было интересно, есть ли способ скрыть и показать кнопку в python без использования сетки.Я пытался переместить их в другое место за кадром, а затем обратно, как только это вызвано переменной, но это не работает (из-за этого кнопки выглядели так, как будто их никогда не существовало).Упаковка, забыв, затем распаковка работает только с этикетками.Дайте мне знать, если у кого-то есть другой способ (Примечание: я новичок).Вот мой код на данный момент:
from tkinter import*
health=1
stamina=1
magica=1
healthcap=1
staminacap=1
magicacap=1
slide=1
def next1(event=None):
global slide
if slide==1:
bglabel.config(image=bg1)
elif slide==2:
classstart.pack()
classstart.pack_forget()
bglabel.config(image=bg2)
elif slide==3:
classstart.pack()
bglabel.pack()
bglabel.pack_forget()
nextbutton1.pack()
nextbutton1.pack_forget()
slide+=1
window.update()
def class_select_screen():
global slide
if slide==3:
classstart.config(image=classdesc)
rougeselbut.pack()
mageselbut.pack()
warriorselbut.pack()
elif slide<3:
rougeselbut.pack()
rougeselbut.pack_forget()
mageselbut.pack()
mageselbut.pack_forget()
warriorselbut.pack()
warriorselbut.pack_forget()
window = Tk()
window.geometry("1500x750+0+0")
classdesc=PhotoImage(file="classdescription.png")
rougedesc=PhotoImage(file="rougedescription.png")
warriordesc=PhotoImage(file="warriordescription.png")
magedesc=PhotoImage(file="magedescription.png")
bg1=PhotoImage(file="backslide1.png")
bg2=PhotoImage(file="backslide2.png")
nextbutton=PhotoImage(file="next.png")
magesel=PhotoImage(file= "mageselect.png")
warriorsel=PhotoImage(file="warriorselect.png")
rougesel=PhotoImage(file="rougeselect.png")
classlabel=Label(window)
classstart= Label(window, image=classdesc)
classstart.place(x=600, y=200)
bglabel= Label(window, image=bg1)
bglabel.place(x=600,y=200)
rougeselbut= Button(window, image=rougesel, bd=0, command=rouge_select())
rougeselbut.place(x=500, y=200)
warriorselbut= Button(window, image=warriorsel, bd=0, command= warrior_select())
warriorselbut.place(x=670, y=195)
mageselbut= Button(window, image=magesel, bd=0, command=mage_select())
mageselbut.place(x=840, y=200)
nextbutton1=Button(window, image=nextbutton, bd=0, command=next1)
nextbutton1.place(x=100, y=100)
window.bind('<Button-1>', lambda event: next1(event))
window.bind('<Button-1>', lambda event: rouge_select(event))
window.bind('<Button-1>', lambda event: warrior_select(event))
window.bind('<Button-1>', lambda event: mage_select(event))
window.mainloop()
- Кнопки mageselbut, warriorselbut и rougeselbut еще ничего не делают, но они должны быть невидимыми до слайда = 3, что, конечно,нет, оставляя class_select_screen довольно бесполезным в данный момент (есть ли способ это исправить, может быть?).
Метку classstart удалось восстановить, и мне было интересно, почему.Сначала я подумал, что, может быть, это только потому, что это было не в следующем1, но я попробовал это несколькими разными способами: один, где он полностью потерпел неудачу, как и другие, и другой, где это было невидимо, когда slide = 2, но не 1.
Далее нужно дважды щелкнуть, чтобы получить слайд, равный 2, что я не совсем понимаю.Она начинается с 1 и в конце она говорит: слайд + = 1, поэтому она должна перейти к слайду = 2 в один клик, верно?
Так что да.Это много, но если у кого-то есть идеи, пожалуйста, дайте мне знать.Я хочу сейчас избегать использования сетки, потому что я все еще не очень знаком с ней, и ни одно из прочитанных объяснений не имеет смысла, поэтому я собирался спросить об этом своего профессора в понедельник.(Хотя, если бы кто-то объяснил это здесь, это было бы здорово, хотя я знаю, что спрашиваю много)
Извините, если я не был ясен, но спасибо заранее.