我有这段代码:
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()
然后一切正常,但我不希望按钮有这样的背景固体条纹。我只想在背景图片上按下按钮。
答案 0 :(得分:0)
在您的代码中有一些看起来很可疑的东西。首先,在标签中关闭包传播。这意味着标签不会根据标签内的小部件调整大小。因此,如果您的标签很小,它将隐藏您在标签中包装的菜单。我的猜测是,这就是发生的事情。在不知道图像大小的情况下,我无法肯定地说出来。
第二个问题是,当您在其容器中打包标签时,您不会指定expand
和fill
等选项,因此它不会增长以填充主窗口。< / p>
如果您只是想在整个GUI中使用背景图像,则不必将其添加到标签中,然后将所有小部件添加到标签中。一种更简单的方法是使用place来让你的标签填充主窗口,然后正常打包或网格化主窗口中的所有其他小部件。这是place
略好于grid
或pack
的一种情况。