簡體   English   中英

在 Python 中使用 Tkinter 創建 GUI

[英]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:我不知道為什么會發生這種情況,但我只知道當我輸入我的英尺和英寸時,不會再執行任何操作。

這也是 GUI 外觀的示例: GUI 輸出示例

第一:按鈕應該執行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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM