python TKinter我能把背景发送到后面吗?

2024-05-08 00:56:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我不熟悉编程和python,所以我提前感谢您的耐心。在

我已经创建了一个类,该类创建了一个新窗口,该窗口的背景是一个测试图像(“test1.gif”)。在

我还在同一个类中创建了一个下拉菜单,允许您在3个国家之间进行选择。在

我可以注释掉生成背景的代码或生成菜单的代码,其他代码将显示出来。但是我希望菜单显示在背景上方。当我运行完整的代码时,我只看到背景。在

我很感激我可能遗漏了一些非常明显的东西,如果有人能指出那是什么。在

谢谢你的时间。 丹

from Tkinter import *
import Tkinter as tk



class dropDown():

    def __init__(self, master):


        #background set_up
        image1 = tk.PhotoImage(file="test1.gif")
        w = image1.width()
        h = image1.height()
        root.geometry("%dx%d+0+0" % (w, h))
        panel1 = tk.Label(root, image=image1)
        panel1.pack(side='top', fill='both', expand='yes')

        # save the panel's image from 'garbage collection'
        panel1.image = image1


        #Drop down menu
        self.var = StringVar(master)
        self.var.set('Alaska') # initial value

        #Have not used countries list just pasted
        self.option = OptionMenu(master, self.var, 'Alberta', 'Australia')
        self.option.pack()



root = Tk()
root.title('drop down test')
dropDown(root)
mainloop()

Tags: 代码fromimageselfmastertkintervar菜单
1条回答
网友
1楼 · 发布于 2024-05-08 00:56:10

(我认为)您的问题是您将根窗口的大小限制为图像的大小(而不是sizeof(image)+sizeof(menu))。这解决了我在OS-X上的问题

import Tkinter as tk

class dropDown():
    def __init__(self, master):

        #background set_up
        image1 = tk.PhotoImage(file="test.gif")
        w = image1.width()
        h = image1.height()
        panel1 = tk.Label(root, image=image1)
        panel1.pack(side='top', fill='both', expand='yes')

        # save the panel's image from 'garbage collection'
        panel1.image = image1

        #Drop down menu
        self.var = tk.StringVar(master)
        self.var.set('Alaska') # initial value

        #Have not used countries list just pasted
        self.option = tk.OptionMenu(master, self.var, 'Alaska','Alberta', 'Australia')
        self.option.pack()

        geomstr="%dx%d+0+0" % (w, panel1.winfo_reqheight()+self.option.winfo_reqheight())
        root.geometry(geomstr)

root = tk.Tk()
root.title('drop down test')
dropDown(root)
root.mainloop()

一个附带说明,这将是非常容易让你的下拉框继承框架,然后调整你的框架大小(虽然这可能不是必要的)。然后您可以将这个小部件移动到GUI上的任何位置。在

编辑

子类化框架:

^{pr2}$

请注意,现在Tkinter/TK负责为您调整所有帧大小。:)

相关问题 更多 >