提问人:bookofproofs 提问时间:9/4/2021 更新时间:11/14/2023 访问量:106
将孩子放在平移窗口内
Position childs inside a paned window
问:
我正在尝试实现一个可调整大小的窗口,其中包含一些小部件,其中一些应该居中,一些应该左对齐。目前,所有小部件都居中:
from tkinter import *
root = Tk()
root.resizable()
screen_width = root.winfo_screenwidth()
screen_height = root.winfo_screenheight()
x_cordinate = int((screen_width / 2) - (300 / 2))
y_cordinate = int((screen_height / 2) - (200 / 2))
root.geometry("{}x{}+{}+{}".format(300, 200, x_cordinate, y_cordinate))
root.title("Pane Sticky Test")
main_pane = PanedWindow(root, orient=VERTICAL)
main_pane.pack(fill=BOTH, expand=1)
var = IntVar()
# check = Checkbutton(main_pane, text="My option", variable=var, sticky=W) --> error unknown option "-sticky"
check = Checkbutton(main_pane, text="My option", variable=var)
main_pane.add(check)
# label = Label(main_pane, text="Preview:", sticky=W) --> error unknown option "-sticky"
label = Label(main_pane, text="Preview:")
main_pane.add(label)
entry = Text(main_pane, height=10, width=50)
main_pane.add(entry)
root.mainloop()
我想将我的选项复选框和我的预览标签左对齐。我在本文档中读到,应该有一个粘性选项,该选项“类似于 .grid() 方法的粘性参数”。但是这个选项不起作用(请参阅我注释掉的两行)。
有没有办法在 tkinter 的垂直方向平移窗口内放置一些左对齐或右对齐的小部件?我在 Windows 上使用 tkinter 版本 8.6 和 Tcl/Tk 版本 8.6.9。
答:
1赞
PCM
9/4/2021
#1
有一个名为 which 函数的选项类似于anchor
sticky
为小部件添加参数。例如 -anchor
check = Checkbutton(main_pane, text="My option", variable=var,anchor=W)
您将看到检查按钮位于左侧。
最终代码 -
from tkinter import *
root = Tk()
root.resizable()
screen_width = root.winfo_screenwidth()
screen_height = root.winfo_screenheight()
x_cordinate = int((screen_width / 2) - (300 / 2))
y_cordinate = int((screen_height / 2) - (200 / 2))
root.geometry("{}x{}+{}+{}".format(300, 200, x_cordinate, y_cordinate))
root.title("Pane Sticky Test")
main_pane = PanedWindow(root, orient=VERTICAL)
main_pane.pack(fill=BOTH, expand=1)
var = IntVar()
check = Checkbutton(main_pane, text="My option", variable=var,anchor=W)
main_pane.add(check)
label = Label(main_pane, text="Preview:",anchor=W)
main_pane.add(label)
entry = Text(main_pane, height=10, width=50)
main_pane.add(entry)
root.mainloop()
并且不要使用 * 进行导入。更推荐这种方式 - 即使用别名导入import tkinter as tk
参考 - 锚点以及为什么使用导入 tkinter
-1赞
toyota Supra
11/14/2023
#2
我想放置我的选项复选框和我的预览标签 左对齐。
这个问题是可以解决的。
避免使用通配符 *。使用 ,然后做前缀import tkinter as tk
tk.
您缺少几个管理器布局。pack()
在前面添加此行 34 到 36。mainloop()
片段,没有小改动,只加了3包(): 将 tkinter 导入为 tk
root = tk.Tk()
root.resizable()
screen_width = root.winfo_screenwidth()
screen_height = root.winfo_screenheight()
x_cordinate = int((screen_width / 2) - (300 / 2))
y_cordinate = int((screen_height / 2) - (200 / 2))
root.geometry("{}x{}+{}+{}".format(300, 200, x_cordinate, y_cordinate))
root.title("Pane Sticky Test")
main_pane = tk.PanedWindow(root, orient=tk.VERTICAL)
var = tk.IntVar()
# check = Checkbutton(main_pane, text="My option", variable=var, sticky=W) --> error unknown option "-sticky"
check = tk.Checkbutton(main_pane, text="My option", variable=var)
main_pane.add(check)
# label = Label(main_pane, text="Preview:", sticky=W) --> error unknown option "-sticky"
label = tk.Label(main_pane, text="Preview:")
main_pane.add(label)
entry = tk.Text(main_pane, height=10, width=50)
main_pane.add(entry)
main_pane.pack(fill=tk.BOTH, expand=1)
check.pack(side=tk.TOP, anchor='nw')
label.pack(side=tk.TOP, anchor='nw')
entry.pack(side=tk.TOP, anchor='nw',fill=tk.BOTH, expand=1)
root.mainloop()
截图:
评论