[英]Multiple frames with tkinter - How to make them run on fullscreen mode
幾秒鍾后,我使用tkinter編寫了一個代碼,在各幀之間切換。 問題是:所有應用程序必須全屏運行。
這是代碼。
from tkinter import *
N_TRIALS = 3
COUNT=-2
N_INTERVALS = 2*N_TRIALS + 1
RELAXING_TIME = 2000
RESTING_TIME = 2000
TASKING_TIME = 2000
start_btn_state = False
def raise_frame(frame):
frame.tkraise()
global COUNT
COUNT+=1
print(COUNT)
if (frame == f3 and COUNT==N_INTERVALS):
frame.after(RESTING_TIME,lambda:raise_frame(f5))
elif(frame == f5):
frame.after(RELAXING_TIME,lambda:raise_frame(f6))
elif frame == f2:
frame.after(RELAXING_TIME, lambda:raise_frame(f3))
elif frame == f3:
frame.after(RESTING_TIME, lambda:raise_frame(f4))
elif frame == f4:
frame.after(TASKING_TIME, lambda:raise_frame(f3))
elif frame==f6:
root.destroy()
def finish():
root.destroy()
def start():
start_btn_state=True
raise_frame(f2)
root = Tk()
f1 = Frame(root)
f2 = Frame(root)
f3 = Frame(root)
f4 = Frame(root)
f5 = Frame(root)
f6 = Frame(root)
for frame in (f1, f2, f3, f4, f5,f6):
frame.grid(row = 0, column = 0, sticky='nsew')
lb0=Label(f1, text="blablabla",font=("Arial Bold",10))
lb0.pack(padx = 10, pady=10)
lb1=Label(f1, text="blablabla",font = ("Arial Bold",10),fg = "black")
lb1.pack(padx = 10, pady=10)
lb2 = Label(f1, text="blablabla",font = ("Arial Bold",10),fg = "green")
lb2.pack(padx = 10, pady=10)
lb3 = Label(f1, text="blablabla",font = ("Arial Bold",10),fg = "blue")
lb3.pack(padx = 10, pady=10)
lb4 = Label(f1, text="blablabla",font = ("Arial Bold",10),fg = "red")
lb4.pack(padx = 10, pady=10)
start_value=BooleanVar()
btn_start=Button(f1, text="Start",font = ("Arial Bold",20), command = start)
btn_start.pack(padx=10,pady=30)
close_value=BooleanVar()
btn_close=Button(f1, text="CLOSE",font = ("Arial Bold",20), command=finish)
btn_close.pack(padx=10,pady=30)
Label(f2, text='ACTION 1').pack()
#Button(f2, text='Go to frame 3', command=lambda:raise_frame(f1)).pack()
f2.config(bg='red')
Label(f3, text='ACTION2').pack(side='left')
f3.config(bg='green')
Label(f4, text='ACTION3').pack()
f4.config(bg='blue')
Label(f5, text='RELAXING FINAL').pack()
f5.config(bg='black')
raise_frame(f1)
root.mainloop()
我不知道如何擴展框架以填充所有窗口。 我嘗試了所有方法:幾何形狀,寬度和高度等。似乎(100%肯定)我做錯了什么才能將這些幀全屏顯示。
有人可以幫我嗎?
抱歉,OOP中沒有該代碼。 我正在學習。
感謝您的幫助!
最好的祝福
屏幕上窗口的位置和幾何形狀由窗口管理器控制。 您的應用程序提供了有關其大小的信息,但是窗口管理器是決定哪些窗口可見以及放置位置的因素。 因此,控制Tk窗口是否為全屏的標志是wm_attributes標志之一。
您可以使用root.wm_attributes('-fullscreen', 1)
將頂級窗口設置為全屏。 如果然后管理您的框架,使其展開以填充父級頂層,則它們將填充屏幕。 對於您的網格使用情況,您應該配置根網格幾何管理器以允許(0,0)擴展以填充區域:
root.grid_rowconfigure(0, weight=1)
root.grid_columnconfigure(0, weight=1)
或者,您可以將每個幀放在此處0,0處,並使用以下方法填充可用空間:
frame.place(x=0, y=0, relwidth=1.0, relheight=1.0)
這是在grid
上方place
適當place
一種情況。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.