[英]Creating a GUI using Tkinter in Python
我正在使用 Tkinter 創建一個 GUI。 我有一個基本的大綱,但我需要一些幫助來了解如何讓輸入框執行我輸入到框中的數字。 我還需要一個在 Tkinter GUI 上顯示最終結果的框。
GUI 的全部內容:我正在創建的 GUI 只是一個英尺到英寸的轉換器。 它有一個英尺輸入框和一個英寸輸入框。 最后的text
框只有英寸。 最終框后面的代碼應該將英尺轉換為英寸,並將用戶輸入到 GUI 中的英寸相加以獲得最終的總和。
示例:例如,5 英尺和 8 英寸將等於 68 英寸。
這是我到目前為止編寫的代碼:
import tkinter as tk
fields = ('Feet', 'Inches')
def feet(entries):
feet = 1
def converter(entries):
feet = 1
inches = 12
final = feet/12 + inches
return final
def makeform(root, fields):
entries = {}
for field in fields:
print(field)
row = tk.Frame(root)
lab = tk.Label(row, width=22, text=field + ": ", anchor='w')
ent = tk.Entry(row)
ent.insert(0, "0")
row.pack(side=tk.TOP,
fill=tk.X,
padx=5,
pady=5)
lab.pack(side=tk.LEFT)
ent.pack(side=tk.RIGHT,
expand=tk.YES,
fill=tk.X)
entries[field] = ent
return entries
if __name__ == '__main__':
root = tk.Tk()
ents = makeform(root, fields)
b1 = tk.Button(root, text='Convert',
command=(lambda e=ents: feet(e)))
b1.pack(side=tk.LEFT, padx=5, pady=5)
b2 = tk.Button(root, text='Quit', command=root.quit)
b2.pack(side=tk.LEFT, padx=5, pady=5)
root.mainloop()
我需要什么幫助:我需要幫助創建一個簡單的文本框,上面寫着“英寸:”,它顯示了最終的英尺總和被轉換為英寸,加上用戶輸入到界面的英寸。 示例: Inches: (final sum)
我還需要在實際 GUI 的頂部中間有一個居中的文本框,它自己說“英尺到英寸轉換器”
當前問題:據我所知,執行的代碼會提示 GUI,但是當我在英尺或英寸條目中輸入任何數字時,沒有任何反應。 Pycharm 終端內部顯示以下內容。 Feet: Inches:
我不知道為什么會發生這種情況,但我只知道當我輸入我的英尺和英寸時,不會再執行任何操作。
第一:按鈕應該執行converter()
,而不是feet()
command=(lambda e=ents: converter(e))
第二:在converter()
您必須從條目中獲取值並轉換為 int
feet = int( entries['Feet'].get() )
inches = int( entries['Inches'].get() )
第三:在開始時,即使沒有文本,您也應該創建Label
並且后期converter()
將不得不更改此Label
文本
label['text'] = 'Result: {}'.format(final)
最后:在計算中你必須使用*
,而不是/
final = feet*12 + inches
import tkinter as tk
fields = ('Feet', 'Inches')
def converter(entries):
feet = int( entries['Feet'].get() )
inches = int( entries['Inches'].get() )
final = feet*12 + inches
label['text'] = 'Result: {}'.format(final)
def makeform(root, fields):
entries = {}
for field in fields:
print(field)
row = tk.Frame(root)
lab = tk.Label(row, width=22, text=field + ": ", anchor='w')
ent = tk.Entry(row)
ent.insert(0, "0")
row.pack(side=tk.TOP,
fill=tk.X,
padx=5,
pady=5)
lab.pack(side=tk.LEFT)
ent.pack(side=tk.RIGHT,
expand=tk.YES,
fill=tk.X)
entries[field] = ent
return entries
if __name__ == '__main__':
root = tk.Tk()
ents = makeform(root, fields)
b1 = tk.Button(root, text='Convert',
command=(lambda e=ents:converter(e)))
b1.pack(side=tk.LEFT, padx=5, pady=5)
b2 = tk.Button(root, text='Quit', command=root.quit)
b2.pack(side=tk.LEFT, padx=5, pady=5)
label = tk.Label(root, text='Result: 0')
label.pack()
root.mainloop()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.