如何在tkinter中多次使用grid_forget?

问题描述 投票:-1回答:1

我正在尝试使用导入方式使自己锻炼,并使程序和模块彼此分开。在我给自己的这项特别锻炼中,我有一个基本的英尺到英寸和英寸到英尺转换器。

除一个问题外,其他所有方法都有效。在GUI上显示答案的位置,新答案覆盖了旧答案,而不是替换。

import tkinter as tk
from tkinter import E, W
import Converter

window = tk.Tk()
window.title("Converter")
answer_label = tk.Label(window, text="No Answer")
answer_label.grid(row=5)

def feet_to_inches_function(old_label):
    old_label.grid_forget()
    answer_label = tk.Label(window, text=Converter.feet_to_inches(int(entry_bar.get())))
    answer_label.grid(row=5)

def inches_to_feet_function(old_label):
    old_label.grid_forget()
    answer = tk.Label(window, text=Converter.inches_to_feet(int(entry_bar.get())))
    answer.grid(row=5)

title_label = tk.Label(window, text="Convert")
entry_bar = tk.Entry(window, font=('HELVETICA', 10))
fti_button = tk.Button(window, text="Feet to Inches", command=lambda: feet_to_inches_function(answer_label))
itf_button = tk.Button(window, text="Inches to Feet", command=lambda: inches_to_feet_function(answer_label))
quit_button = tk.Button(window, text="Quit", command=window.destroy)

title_label.grid(row=0, column=0, sticky=W)
entry_bar.grid(row=1, columnspan=2, sticky=(E, W))
fti_button.grid(row=3, column=0)
itf_button.grid(row=3, column=1)
quit_button.grid(row=4, columnspan=2, sticky=(E, W))

window.mainloop()

也是一个单独的问题,我很难理解mainloop。我知道它使程序进入无限循环,但是从哪里来呢?我看不到任何逻辑证据表明我的代码处于无休止的循环中。

非常感谢

python tkinter grid
1个回答
0
投票

这是您的解决方案:

import tkinter as tk
from tkinter import E, W


window = tk.Tk()
window.title("Converter")
answer_label = tk.Label(window, text="No Answer")
answer_label.grid(row=5)


def feet_to_inches_function(old_label):
    old_label.grid_forget()
    answer_label.configure(text='As you want (INCHES)')
    answer_label.grid(row=5)


def inches_to_feet_function(old_label):
    old_label.grid_forget()
    answer_label.configure(text='As you want (FEET)')
    answer_label.grid(row=5)


title_label = tk.Label(window, text="Convert")
entry_bar = tk.Entry(window, font=('HELVETICA', 10))
fti_button = tk.Button(window, text="Feet to Inches", command=lambda: feet_to_inches_function(answer_label))
itf_button = tk.Button(window, text="Inches to Feet", command=lambda: inches_to_feet_function(answer_label))
quit_button = tk.Button(window, text="Quit", command=window.destroy)

title_label.grid(row=0, column=0, sticky=W)
entry_bar.grid(row=1, columnspan=2, sticky=(E, W))
fti_button.grid(row=3, column=0)
itf_button.grid(row=3, column=1)
quit_button.grid(row=4, columnspan=2, sticky=(E, W))

window.mainloop()

您只需要configuretext的C0

© www.soinside.com 2019 - 2024. All rights reserved.