0

我正在尝试制作一个带有窗口和菜单的 Windows 模拟器(或者我想我这样做了),最近我使用拖放系统来移动标签(我的大多数小部件都是,我避免使用画布,因为它们有些困难: | ),所以我假装我移动了窗口,现在,问题是由于某种奇怪的原因,我拖动的标签闪烁,或者没有用鼠标正确移动,这是一个例子

我曾尝试使用update_idletasks()拖放功能..但这几乎不能解决我的问题..因为在它闪烁并且窗口未正确显示之前..现在它在拖动时正确显示但它闪烁

窗口是一个带有我移动图像的标签,它位于另一个标签中,即壁纸,我试图将其更改为画布......但显然它仍然是同样的问题

这是该系统的代码和窗口的代码:


 #desktop background code
 Wallpaper = "BlissHill"
    
 Background_image = tk.PhotoImage(file="Assets/Wallpapers/" + Wallpaper + ".png")
    
 Background_label = tk.Label(Ventana, image=Background_image)
 Background_label.place(x=-1, y=-1, relwidth=1, relheight=1)

# Drag and drop function
def make_draggable(widget):
    widget.bind("<Button-1>", on_drag_start)
    widget.bind("<B1-Motion>", on_drag_motion)


def on_drag_start(event):
    widget = event.widget
    widget.update_idletasks()
    widget._drag_start_x = event.x
    widget._drag_start_y = event.y


def on_drag_motion(event):
    widget = event.widget
    x = widget.winfo_x() - widget._drag_start_x + event.x
    y = widget.winfo_y() - widget._drag_start_y + event.y
    widget.update_idletasks()
    widget.place(x=x, y=y)

# File manager (template)
FileManager_Texture = tk.PhotoImage(file="Assets/FileManager.png")
FileManagerMenu = Label(
    Background_label,
    width=687,
    height=374,
    bg="black",
    image=FileManager_Texture,
    borderwidth="0",
)

FileManagerMenu.place(x=1512, y=1512) # initial position before pressing the button
make_draggable(FileManagerMenu)

完整的代码太多了,不能放在这里

4

0 回答 0