Tkinter 网格只能放置在屏幕死点以外的任何地方
Tkinter grid can't place anywhere but dead center of screen
所以我只需要一张照片作为背景,然后在特定位置添加一个按钮。
我加载了背景图片,但现在当我尝试放置按钮时,它只会直接进入屏幕中央。如果我将列或行设为 0 以外的任何值,按钮就会离开屏幕。
full 变量仅用于用户是否需要全屏,我不希望它调整到任何特定大小,只是全屏或半屏。但这无关紧要。
from Tkinter import *
from PIL import Image, ImageTk
full= False
pilImage= Image.open("test.png")
width, height = pilImage.size
new_size = width/2, height/2
resized_image = pilImage.resize(new_size, Image.ANTIALIAS)
root = Tk()
root.resizable(False, False)
if full:
root.geometry("1920x1080")
canvas= Canvas(root, width=1920, height=1080)
background= ImageTk.PhotoImage(pilImage)
root.attributes("-fullscreen", True)
change_window_size_button= Button(root, text="Switch to windowed.", command=root.quit)
else:
root.geometry("960x540")
canvas= Canvas(root, width=960, height=540)
background= ImageTk.PhotoImage(resized_image)
change_window_size_button= Button(root, text="Switch to fullscreen.", command=root.quit)
canvas.grid(row=0)
label= Label(canvas, image=background)
label.grid(row=0)
change_window_size_button.grid(row=0, column=0)
root.mainloop()
![长什么样子]:https://ibb.co/cycTFT
编辑:
好的,所以我发现了一些新东西,问题是带有背景图像的 canvas 被设置为单元格的默认大小。
因此,如果我让它越过第 0 行和第 0 列,它就会离开屏幕进入另一个单元格。
如果我将它设置为行=0 和列=1,那么按钮就在这里。
![行=0 且列=1]:https://ibb.co/jWt2aT
所以我需要在保持图像大小的同时使单元格变小,这意味着我需要以某种方式让它占据多个单元格。我仍然不知道该怎么做...但是进度none越少。
我不确定这是否是您特别想要的,但我可以通过添加
将按钮保留在 Tkinter window 中
root.grid_columnconfigure(0, weight=1)
root.grid_rowconfigure(0, weight=1)
然后像这样更改按钮的网格位置
change_window_size_button.grid(row=1, column=0)
这为将小部件放置在 "master grid"(根目录)中奠定了基础,如果您愿意的话。
设置 row=0
将按钮放回中心。
如果你稍微搞砸了,你应该能够在你想要的地方找到按钮。
tkinter button below image.
编辑:解释
所以我只需要一张照片作为背景,然后在特定位置添加一个按钮。 我加载了背景图片,但现在当我尝试放置按钮时,它只会直接进入屏幕中央。如果我将列或行设为 0 以外的任何值,按钮就会离开屏幕。
full 变量仅用于用户是否需要全屏,我不希望它调整到任何特定大小,只是全屏或半屏。但这无关紧要。
from Tkinter import *
from PIL import Image, ImageTk
full= False
pilImage= Image.open("test.png")
width, height = pilImage.size
new_size = width/2, height/2
resized_image = pilImage.resize(new_size, Image.ANTIALIAS)
root = Tk()
root.resizable(False, False)
if full:
root.geometry("1920x1080")
canvas= Canvas(root, width=1920, height=1080)
background= ImageTk.PhotoImage(pilImage)
root.attributes("-fullscreen", True)
change_window_size_button= Button(root, text="Switch to windowed.", command=root.quit)
else:
root.geometry("960x540")
canvas= Canvas(root, width=960, height=540)
background= ImageTk.PhotoImage(resized_image)
change_window_size_button= Button(root, text="Switch to fullscreen.", command=root.quit)
canvas.grid(row=0)
label= Label(canvas, image=background)
label.grid(row=0)
change_window_size_button.grid(row=0, column=0)
root.mainloop()
![长什么样子]:https://ibb.co/cycTFT
编辑: 好的,所以我发现了一些新东西,问题是带有背景图像的 canvas 被设置为单元格的默认大小。 因此,如果我让它越过第 0 行和第 0 列,它就会离开屏幕进入另一个单元格。 如果我将它设置为行=0 和列=1,那么按钮就在这里。
![行=0 且列=1]:https://ibb.co/jWt2aT
所以我需要在保持图像大小的同时使单元格变小,这意味着我需要以某种方式让它占据多个单元格。我仍然不知道该怎么做...但是进度none越少。
我不确定这是否是您特别想要的,但我可以通过添加
将按钮保留在 Tkinter window 中root.grid_columnconfigure(0, weight=1)
root.grid_rowconfigure(0, weight=1)
然后像这样更改按钮的网格位置
change_window_size_button.grid(row=1, column=0)
这为将小部件放置在 "master grid"(根目录)中奠定了基础,如果您愿意的话。
设置 row=0
将按钮放回中心。
如果你稍微搞砸了,你应该能够在你想要的地方找到按钮。
tkinter button below image.
编辑:解释