похоже, я не могу открыть фрейм в python

#python #tkinter

#питон #tkinter

Вопрос:

я хочу открыть menu_frame, нажав кнопку login_button, но кадр не отображается, и сообщений об ошибках не появляется. это мой первый раз, и я так растерялся, что попытался поискать в Google, как исправить эту проблему, но из того, что я прочитал, мне кажется, что нет никаких ошибок или каких-либо причин для того, чтобы этот код не функционировал должным образом. пожалуйста, помогите 🙁

 from tkinter import *  window = Tk() window.title("EL TALLO") window.geometry("700x490") window.config(background="#FFF8E5")  #회원가입 def register_frame():  register_frame = Frame(  window,   bd=2,   bg='#FFF8E5',  relief=SOLID,   padx=10,   pady=10  )   Label(  register_frame,   text="ID입력",   bg='#CCCCCC',  ).grid(row=0, column=0, sticky=W, pady=10)   Label(  register_frame,   text="비밀번호 입력",   bg='#CCCCCC',  ).grid(row=5, column=0, sticky=W, pady=10)   newlyset_id = Entry(  register_frame   )   newlyset_pw = Entry(  register_frame,   show='*'  )   register_btn = Button(  register_frame,   width=15,   text='회원가입',  relief=SOLID,  cursor='hand2',  command=register_frame.destroy  )   newlyset_id.grid(row=0, column=1, pady=10, padx=20)  newlyset_pw.grid(row=5, column=1, pady=10, padx=20)  register_btn.grid(row=7, column=1, pady=10, padx=20)  register_frame.pack()  register_frame.place(x=220, y=150)   def new_id(): #new_id에 newlyset_id에 입력한 값을 저장  new_id = newlyset_id.get()  def new_pw(): #new_pw에 newlyset_pw에 입력한 값을 저장  new_pw = newlyset_pw.get()  #메뉴화면 def menu_frame():  menu_frame = Frame(  window,  bd=2,  bg='#FFF8E5',  relief=SOLID,   padx=10,   pady=10  )    label1 = Label(menu_frame, text = "EL TALLO", bg="lightgreen",width=10, height=1, font=(15))  label1.pack()   btn1 = Button(menu_frame, text = "play game", bg="gray", width=15, height=1)  btn1.pack()   btn2 = Button(menu_frame, text = "How to play", bg="gray", width=15, height=1)  btn2.pack()   btn3 = Button(menu_frame, text = "Settings", bg="gray", width=15, height=1)  btn3.pack()   def btncmd():  print("게임이 종료되었습니다")    btn4 = Button(menu_frame, text = "END GAME", command=btncmd, bg="lightgreen", width=15, height=1)  btn4.pack()    label1.place(x=50, y=50)  btn1.place(x=50, y=100)  btn2.place(x=50, y=150)  btn3.place(x=50, y=200)  btn4.place(x=50, y=250)   #로그인 Label(  window,  text="아이디 입력",   bg='#CCCCCC',  ).place(x=230, y=170)  id_tf = Entry(  window,   ).place(x=330, y=170)  def id(): #id에 id_tf에 입력한 값을 저장  id = id_tf.get()  Label(   window,   text="비밀번호 입력",   bg='#CCCCCC',  ).place(x=230, y=220)  pw_tf = Entry(  window,   ).place(x=330, y=220)  def pw(): #pw에 pw_tf에 입력한 값을 저장  pw = pw_tf.get()   #회원가입 버튼 registerbutton = Button(  window,  width=15,  text="회원가입",  bg="#CCCCCC",  cursor='hand2',  command=register_frame  ) registerbutton.place(x=360, y=270)   #로그인 버튼 loginbutton = Button(  window,  width=15,  text="로그인",  bg="#CCCCCC",  cursor='hand2',  command=menu_frame  ) loginbutton.place(x=230, y=270)  window.mainloop()  

Ответ №1:

Вы не упаковали menu_frame, и отступ в def btncmd() был неправильным.

То есть:

 btn3 = Button(menu_frame, text = "Settings", bg="gray", width=15, height=1)  btn3.pack()    menu_frame.pack()  def btncmd():  print("게임이 종료되었습니다")