【问题标题】:Can't get create_window to work on a Canvas. Tkinter Python 3.6无法让 create_window 在 Canvas 上工作。 Tkinter Python 3.6
【发布时间】:2018-09-18 07:59:12
【问题描述】:

我自己制作了名为“InventorySlot”的小部件,我需要将自定义小部件中的小部件制作到 Canvas 上,而不是使用“grid”或“pack”。

import tkinter as tk
from tkinter import *
from tkinter.ttk import *

class Main:
    def __init__(self):
        self.root = Tk()
        self.root.geometry('500x500')
        self.test = InventorySlot(self.root)
        self.test.grid()

class InventorySlot(tk.Frame):
    def __init__(self,parent,*args,**kwargs):
        tk.Frame.__init__(self,parent)
        self.options = {}
        self.options.update(kwargs)
        self.slot = tk.Label(self,height=3,width=6,text='',relief=SUNKEN,bg='#8b8b8b',bd=4,padx=1,pady=0)
        self.canvas = Canvas(self)
        self.canvas.create_window(10,10,window=self.slot)
        self.canvas.grid()

MainTk = Main()



MainTk.root.mainloop()

它显示的只是一个空白画布

【问题讨论】:

    标签: python python-3.x user-interface tkinter tkinter-canvas


    【解决方案1】:

    您需要在创建画布之后创建标签。创建的顺序决定了堆叠顺序(即:z-index)。 s 上的标签,就在画布后面。

    【讨论】:

    • 有什么方法可以重新排序吗?
    • @HastyBasher:是的。您可以调用lift 将标签提升到画布上方。
    猜你喜欢
    • 2019-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-25
    • 2019-12-21
    • 1970-01-01
    相关资源
    最近更新 更多