【发布时间】:2017-01-19 02:45:24
【问题描述】:
我正在创建一个简单的 tkinter 弹出窗口(pastebin 链接:http://pastebin.com/kvv0G4rM)。我面临的问题是标题消息(“输入费用”)从弹出的 tkinter 窗口中截断。
我尝试调整 tkinter 窗口的大小并将其移至中心。在这种情况下,标签、按钮一切都没有完全填满屏幕。 (尝试注释掉高度和大小cmets以及.geometry函数调用)
看起来像这样
The current scenario of the lables and buttons
我正在使用网格,因为我必须为每次按下“添加费用”按钮动态添加行。请参阅函数 (add_row) 。 index 变量保存新条目字段将插入到哪个数字行的计数。
这个问题类似于:- What controls automated window resizing in Tkinter?
唯一的问题是当我手动调整大小时,我失去了自动调整大小的行为。这对于我的 tkinter 窗口行为的后半部分是必要的(即当我在“添加费用”按钮按下时添加新的输入字段时。)。
我包括代码:-
self.root = master
self.root.wm_title("Enter Expenses")
self.frame = tkinter.Frame(master)
self.frame.grid()
self.button = tkinter.Button(self.frame,
text="QUIT", fg="red",
command=self.exit)
self.button.grid(row=0,column=0)
self.slogan = tkinter.Button(self.frame,
text="Add Expense",
command=self.create_expenseTable)
self.slogan.grid(row=0,column=1)
def create_expenseTable(self):
global index
global expenseReport
self.frame.destroy()
self.frame = tkinter.Frame()
self.frame.grid()
tkinter.Label(self.frame,text="Category").grid(row=index,column=0)
tkinter.Label(self.frame,text="Amount").grid(row=index,column=1)
index+=1
self.e1 = tkinter.Entry(self.frame)
self.e2 = tkinter.Entry(self.frame)
self.e1.grid(row=index, column=0)
self.e2.grid(row=index, column=1)
index+=1
self.create_button()
def create_button(self):
global index
self.slogan = tkinter.Button(self.frame,
text="Add Expense",
command=self.add_row)
self.slogan.grid(row=index,column=1)
self.submit = tkinter.Button(self.frame,text="Submit Expense",command=self.endFunction)
self.submit.grid(row=index,column=0)
def add_row(self):
global index
global expenseReport
self.slogan.destroy()
self.submit.destroy()
category = self.e1.get()
expense = self.e2.get()
self.e1 = tkinter.Entry(self.frame)
self.e2 = tkinter.Entry(self.frame)
self.e1.grid(row=index,column=0)
self.e2.grid(row=index,column=1)
index+=1
self.create_button()
每点击一次 add_expense 按钮,索引就会增加;然后它会添加一个新行并将按钮向下移动一行。
我做错了什么? 我想确保窗口的所有内容完全适合窗口(标题栏等),并且在我调整大小时不会被隐藏。
【问题讨论】:
-
“标题消息(“输入费用”)从弹出的 tkinter 窗口中被截断”是什么意思?这是否意味着它应该同时显示类别和金额部分,但它只显示第一个?因为这是我从你上面提供的图片中了解到的。
-
我已经更新了图片。查看第一张图片,看看弹出窗口时输入费用是如何显示的。
-
只需对根窗口使用
.geometry()方法。为其添加一个值,例如:“500x100”。第一个(在本例中为 500)将是根窗口的宽度。 -
有没有办法自动调整大小?如果我使用 .geometry 并给出我需要的尺寸。我遇到了如图 2 所示的问题。这里的文本框和退出并添加费用按钮被隐藏或只显示了一部分。
-
pastebin.com/kvv0G4rM ,我已经用我的粘贴箱链接更新了这个问题。我也在这里评论它。它有 tkinter 代码(没有给出其余逻辑的代码,因为它会混淆更多)。尝试注释掉 .geometry 调用,看看如果我尝试调整大小会发生什么。
标签: python-2.7 python-3.x tkinter