Как мне показать разные группы переключателей в разное время в Python, используя Tkinter?
from Tkinter import *
import time
import webbrowser
import random
import Tkinter
"""Sets the time from the buttons into a list"""
def selectedHour():
x = hour.get()
if not wake_time:
wake_time.append(x)
else:
wake_time[0] = x
print wake_time
count += 1
def selectedMinute():
x = minute.get()
if len(wake_time) == 1:
wake_time.append(x)
else:
wake_time[1] = x
print wake_time
count += 1
def selectedPeriod():
x = period.get()
if len(wake_time) == 2:
wake_time.append(x)
else:
wake_time[2] = x
print wake_time
count += 1
wake_time = []
"""Creates Buttons"""
hour = IntVar()
minute = IntVar()
period = StringVar()
hour.set(None)
minute.set(None)
period.set(None)
count = 1
if count == 1:
radio12 = Radiobutton(app, text = 12, value = 12, variable = hour, command = selectedHour).pack()
elif count == 2:
radio2 = Radiobutton(app, text = 0, value = 0, variable = minute, command = selectedMinute).pack()
else:
radio3 = Radiobutton(app, text = 'am', value = 'am', variable = period, command = selectedPeriod).pack()
app.mainloop()
Как сделать так, чтобы мои кнопки появлялись в разное время, в зависимости от того, какой счет равен? То, что я хочу, это когда первый набор кнопок при нажатии показывает другой набор кнопок, а затем, когда они нажаты, появляется третий набор.
1 ответ
Решение
#!/usr/bin/python
import Tkinter
from Tkinter import *
"""Sets the time from the buttons into a list"""
def selectedHour(count):
x = hour.get()
if not wake_time:
wake_time.append(x)
else:
wake_time[0] = x
print wake_time
count += 1
frame2.tkraise() # brings frame to front
def selectedMinute(count):
x = minute.get()
if len(wake_time) == 1:
wake_time.append(x)
else:
wake_time[1] = x
print wake_time
count += 1
frame3.tkraise() # brings frame to front
def selectedPeriod(count):
x = period.get()
if len(wake_time) == 2:
wake_time.append(x)
else:
wake_time[2] = x
print wake_time
count += 1
frame4.tkraise() # brings frame to front
wake_time = []
"""Creates Buttons"""
app = Tk()
hour = IntVar()
minute = IntVar()
period = StringVar()
hour.set(None)
minute.set(None)
period.set(None)
frame1 = Frame(app)
frame2 = Frame(app)
frame3 = Frame(app)
frame4 = Frame(app)
for frame in (frame1, frame2, frame3, frame4):
frame.grid(row=0,column=0, sticky='news') #set frame layout
count = 1
# initial value
HOUR = [1,2,3,4,5,6,7,8,9,10,11,12]
MINUTE = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59]
PERIOD = ['AM','PM']
group1 = LabelFrame(frame1, text="Hour", padx=5, pady=5) #Hour Label
group1.pack(padx=10, pady=10)
HRoption = OptionMenu(group1, hour, *HOUR, command = lambda x:selectedHour(count)) #dropdown menu for hours
HRoption.pack()
group2 = LabelFrame(frame2, text="Minute", padx=5, pady=5) #label for minutes
group2.pack(padx=10, pady=10)
MINOption = OptionMenu(group2, minute, *MINUTE, command = lambda x:selectedMinute(count)) #dropdown menu for minutes
MINOption.pack()
group3 = LabelFrame(frame3, text="Period", padx=5, pady=5)
group3.pack(padx=10, pady=10) #label for period
MINOption = OptionMenu(group3, period, *PERIOD, command = lambda x:selectedPeriod(count)) #dropdown menu for period
MINOption.pack()
frame1.tkraise() #start the first frame
app.mainloop()