【发布时间】:2020-11-20 19:23:48
【问题描述】:
我尝试了很多事情来做两件事:
- 将我的内容居中(水平)
- 右下角有滚动条
这是我的代码: # 编码:utf8 从 tkinter 导入 * 从 tkinter 导入 ttk
class Program:
def __init__(self):
# Tk.__init__(self)
# Fill the content of the window
self.window = Tk()
self.window.geometry("1080x720")
self.createFrameWithScrollbar()
self.content()
def createFrameWithScrollbar(self):
# Create a Main Frame
self.mainFrame = Frame(self.window)
self.mainFrame.pack(fill=BOTH, expand=True)
# Create a canvas
self.canvas = Canvas(self.mainFrame)
self.canvas.pack(side=LEFT, fill=BOTH, expand=True)
# Add a scrobar
yScrollbar = ttk.Scrollbar(self.mainFrame, orient=VERTICAL, command=self.canvas.yview)
yScrollbar.pack(side=RIGHT, fill=Y)
xScrollbar = ttk.Scrollbar(self.mainFrame, orient=HORIZONTAL, command=self.canvas.xview)
xScrollbar.pack(side=BOTTOM, fill=X)
# Configure the canvas
self.canvas.configure(yscrollcommand=yScrollbar.set)
self.canvas.configure(xscrollcommand=xScrollbar.set)
self.canvas.bind('<Configure>', lambda e: self.canvas.configure(scrollregion = self.canvas.bbox("all")))
self.frame = Frame(self.canvas)
self.canvas.create_window((0,0), window=self.frame, anchor="nw")
self.currentFrame = Frame(self.frame)
self.currentFrame.configure(bg="red")
self.currentFrame.pack(fill=BOTH, expand=1)
def content(self):
label_title = Label(self.currentFrame, text="Title")
label_title.grid(column=0, row=0, sticky=NSEW)
label_description = Label(self.currentFrame, text="Title")
label_description.grid(column=0, row=1, sticky=NSEW)
label_version = Label(self.currentFrame, text="0.2 beta [Novembre 2020]")
label_version.grid(column=0, row=2, sticky=NSEW)
# Lauch the program
app = Program()
app.window.mainloop()
所以结果如下:
有什么建议吗?
底部边栏太小了!我不知道为什么。 关于文本,它根本不是中心;( 如果我调整窗口大小,我想让它居中并改变位置
非常感谢
【问题讨论】:
-
您应该在 两个滚动条之后打包 Canvas。目前,它占据了包含 Frame 的整个左侧,因此其他所有内容都必须完全在它的右侧。
-
此外,建议使用全部
pack或全部grid并且不要混合几何管理器....除非您是受虐狂。 -
@jasonharper : 我试过了,但没有任何改变
-
@AndrewAllaire:谢谢你的建议。我正在发现 Tkinter,所以让我们尝试使用网格。不确定是否能找到相同的东西
-
@AndrewAllaire:我几乎总是在应用程序中同时使用
pack和grid。他们每个人都有长处和短处。如果您尝试只用一个人来做所有事情,我认为您更像是一个受虐狂。