我正在使用pack方法在python GUI中创建一个表格,学生可以通过“请求”帮助输入名称。
下面是我的代码的修改和简化版本。
import tkinter as tk
class App(object):
def __init__(self, master):
self._master = master
master.title = 'Table'
master.geometry('600x600')
frame = tk.Frame(master).pack()
button = tk.Button(frame, text="Ask for help",
command=self.request_help)
button.pack(side=tk.TOP)
# frame for hashtag
self._hashtagframe = tk.Frame(frame)
self._hashtagframe.pack(side=tk.LEFT)
# frame for Names
self._nameframe = tk.Frame(frame)
self._nameframe.pack(side=tk.LEFT)
# frame for buttons
self._timeframe = tk.Frame(frame).pack(side=tk.LEFT)
def request_help(self):
name = "BOB" # they enter some name
num = "number" # they are some number
namelabel=tk.Label(self._nameframe, text=name).pack(side=tk.TOP)
numlabel=tk.Label(self._hashtagframe, text=num).pack(side=tk.TOP)
student_timeframe = tk.Frame(self._timeframe).pack(side=tk.TOP)
redbutton = tk.Button(student_timeframe, command=blah1)
redbutton.pack(side=tk.LEFT)
greenbutton= tk.Button(student_timeframe, command=blah2)
greenbutton.pack(side=tk.LEFT)
当学生输入他们的姓名时,在按钮框中必须显示一个红色和绿色的按钮。我试图通过创建一个框架来将这两个按钮放到同一“行”中,但是,当我运行此代码时,这两个按钮向侧面倾斜。
我尝试更改所有内容,但文本和2个按钮一直向右移。有人知道为什么吗?
答案 0 :(得分:1)
你做
student_timeframe = tk.Frame(self._timeframe).pack(side=tk.TOP, anchor=tk.W, expand=True)
这会将pack()
的返回值存储在student_timeframe
中的None
中。
因此,您实际上并没有在此框架中打包timelabel
,redbutton
和greenbutton
,因为您将None
作为其父级传递,这使其默认为根窗口
像这样分割行
student_timeframe = tk.Frame(self._timeframe)
student_timeframe.pack(side=tk.TOP, anchor=tk.W, expand=True)
以便student_timeframe
实际上拥有对框架的引用。