Tkinter按钮位于同一行,但带有2列的scrolledtext

时间:2017-08-09 09:48:52

标签: python python-3.x tkinter

我正在使用python3的tkinter进行GUI。 对于一个框架,我想结果是这样的: enter image description here 但是当我尝试使用这段代码时:

master.title("Homepage")
master.title("Window to check information")
master.geometry('%dx%d+%d+%d' % (850, 800, (master.winfo_screenwidth() - 850) / 2, 0))

self.information = tkst.ScrolledText(self, wrap=tk.WORD, height=20, width=100)
self.btn1 = tk.Button(self, text='Cours', height=3, width=40)
self.btn2 = tk.Button(self, text='Absences',  height=3, width=40)
self.btn3 = tk.Button(self, text='Notes',  height=3, width=40)
self.btn4 = tk.Button(self, text='Return',  height=3, width=40)

self.information.config(font=font.Font(size=15))
self.information.configure(background='#C0C0C0')

self.btn2.config(font=font.Font(size=12))
self.btn3.config(font=font.Font(size=12))
self.btn1.config(font=font.Font(size=12))
self.btn4.config(font=font.Font(size=12))

self.information.grid(row=0,column=0)
self.btn1.grid(row=1,column=0)
self.btn2.grid(row=1,column=1)
self.btn3.grid(row=2,column=0)
self.btn4.grid(row=2,column=1)

我发现GU​​I就像: enter image description here

有人可以帮助我如何编写网格代码或打包以实现第一张图片?谢谢。

2 个答案:

答案 0 :(得分:4)

要使ScrolledText跨越两列,您需要在网格中使用columnspan选项:

self.information.grid(row=0, column=0, columnspan=2)

答案 1 :(得分:0)

使用pack方法也可以实现相同的效果,我发现它更优选,因为它处理窗口扩展比网格系统更好。

请参阅下文,了解如何实现这一目标:

from tkinter import *

root = Tk()

frametop = Frame(root)
framebottom = Frame(root)
frameleft = Frame(framebottom)
frameright = Frame(framebottom)

text = Text(frametop)
scroll = Scrollbar(frametop, command=text.yview)
btn1 = Button(frameleft, text="Course")
btn2 = Button(frameleft, text="Abscences")
btn3 = Button(frameright, text="Notes")
btn4 = Button(frameright, text="Return")

text['yscrollcommand'] = scroll.set

frametop.pack(side=TOP, fill=BOTH, expand=1)
framebottom.pack(side=BOTTOM, fill=BOTH, expand=1)
frameleft.pack(side=LEFT, fill=BOTH, expand=1)
frameright.pack(side=RIGHT, fill=BOTH, expand=1)

text.pack(side=TOP, fill=BOTH, padx=5, pady=5, expand=1)
scroll.pack(side=BOTTOM, fill=BOTH, padx=5, pady=5, expand=1)
btn1.pack(side=TOP, fill=BOTH, padx=5, pady=5, expand=1)
btn2.pack(side=BOTTOM, fill=BOTH, padx=5, pady=5, expand=1)
btn3.pack(side=TOP, fill=BOTH, padx=5, pady=5, expand=1)
btn4.pack(side=BOTTOM, fill=BOTH, padx=5, pady=5, expand=1)

root.mainloop()

这会创建四个框架,并将项目打包到指定位置,并在它们之间填充:

enter image description here

扩大或缩小窗口(在合理范围内,收缩过多导致Tkinter开始隐藏物品)将导致物品自动移动并改变大小。