簡體   English   中英

選擇OptionMenu中的選項時,如何使Tkinter按鈕不消失?

[英]How to make Tkinter button to not disappear when option in OptionMenu is selected?

我有以下代碼:

def type():
    variable=var.get()
    if variable=="Text with caps":
        import caps_main.py


from Tkinter import *
t = Tk()
t.geometry("500x300")
p = PhotoImage(file="C:\Users\Indrek\Downloads\Desert.gif")
l = Label(t, image=p)
t.wm_title("School Test")

var = StringVar(l)
var.set("Select test type.") # initial value

option = OptionMenu(l, var, "Text with caps", "Text with mistakes")
option.pack(expand=Y)


b = Button(l, text="Start", command = lambda:type())
b.configure(background='PeachPuff')
b.pack(expand=Y)

l.pack_propagate(0)
l.pack()

t.mainloop()

問題是,當我運行代碼並從optionmenu中選擇一個選項時,“開始”按鈕消失了。 如何使按鈕不消失?

當我將代碼更改為:(小部件在此代碼中的主框架(t)中而不在標簽(l)中)

def type():
    variable=var.get()
    if variable=="Text with caps":
        import caps_main.py


from Tkinter import *
t = Tk()
t.geometry("500x300")
p = PhotoImage(file="C:\Users\Indrek\Downloads\Desert.gif")
l = Label(t, image=p)
t.wm_title("School Test")

var = StringVar(t)
var.set("Select test type.") # initial value

option = OptionMenu(t, var, "Text with caps", "Text with mistakes")
option.pack(expand=Y)


b = Button(t, text="Start", command = lambda:type())
b.configure(background='PeachPuff')
b.pack(expand=Y)

l.pack_propagate(0)
l.pack()

t.mainloop()

然后一切正常,但是我不希望按鈕的背景具有這樣的純色條紋。 我只想要背景圖片上的按鈕。

在您的代碼中有幾件事看起來可疑。 首先,在標簽中關閉包裝傳播。 這意味着標簽不會根據標簽內的小部件調整大小。 因此,如果標簽很小,它將隱藏包裝在標簽中的菜單。 我的猜測是,這就是正在發生的事情。 不知道您的圖片大小,我無法確定。

第二個問題是,當您將標簽包裝在其容器中時,沒有指定諸如expandfill選項,因此它不會增長來填充主窗口。

如果您只是想在整個GUI中使用背景圖片,則不必將其添加到標簽中,然后再將所有小部件添加到標簽中。 一種更簡單的方法是使用place來使標簽充滿主窗口,然后像往常一樣將主窗口中的所有其他小部件打包或網格化。 在這種情況下, placegridpack好一點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM