簡體   English   中英

Tkinter 更新標簽文本

[英]Tkinter update label text

我正在嘗試根據他們在“drop”中選擇的內容更新“label_enter_what”中的標簽文本。 因此,如果他們選擇“能量”,標簽將更改為:在下面選擇的單位中輸入波長“,例如。對不起,如果代碼看起來很亂,這是我第一次編碼。這應該是我的光子屬性計算器取笑是因為在物理學中,我們目前正在這樣做,但是使用鋼筆和計算器。

import tkinter as tk
from tkinter import *
from PIL import ImageTk, Image
HEIGHT = 600
WIDTH = 900

root = tk.Tk()

root.title("Photon property calculator")

canvas = tk.Canvas(root, height=HEIGHT, width=WIDTH)
canvas.pack()

background_image = ImageTk.PhotoImage(Image.open('interference.jpg'))
background_label = tk.Label(root, image=background_image)
background_label.place(relheight=1, relwidth=1)

frame = tk.Frame(root, bg='#3E3E3E', bd=5)
frame.place(relx=0.5, rely=0.1, relheight=0.1, relwidth=0.75, anchor='n')

frame_upper = tk.Frame(root, bg='#3E3E3E', bd=5)
frame_upper.place(relx=0.5, rely=0.03, relheight=0.06, relwidth=0.75, anchor='n')

label_what_to_calc = tk.Label(frame_upper, bg='white', text='Enter what \n to calculate')
label_what_to_calc.place(relx=0, rely=0, relheight=1, relwidth=0.15)

label_enter_what = tk.Label(frame_upper, bg='white', text='Enter * in a chosen unit below.')
label_enter_what.place(relx=0.2, relheight=1, relwidth=0.2)

label_unit = tk.Label(frame_upper, bg='white', text='')
label_unit.place(relx=0.5, relheight=1, relwidth=0.1)

lower_frame = tk.Frame(root, bg='#60A8FF', bd=10)
lower_frame.place(relx=0.5, rely=0.3, relheight=0.5, relwidth=0.75, anchor='n')

entry_value = tk.Entry(frame, font=40, bg='white')
entry_value.place(relx=0.175, rely=0, relheight=1, relwidth=0.4)

OPTIONS = [
    "Energy",
    "Frequency",
    "Wavelength"
]

clicked = StringVar()
clicked.set(OPTIONS[0])

drop = tk.OptionMenu(frame, clicked, *OPTIONS)
drop.place(relx=0, rely=0, relheight=1, relwidth=0.15)

OPTIONS_UNITS = ["μm",
                 "nm",
                 "pm",
                 "aJ",
                 "zJ",

]

clicked_1 = StringVar()
clicked_1.set(OPTIONS_UNITS[1])

drop_units = tk.OptionMenu(frame, clicked_1, *OPTIONS_UNITS)
drop_units.place(relx=0.6, rely=0, relheight=1, relwidth=0.09)

button = tk.Button(frame, text='Calculate!', font=40, bg="#F96612", fg='black')
button.place(relx=0.7, relheight=1, relwidth=0.3)

label = tk.Label(lower_frame, bg='white', text=clicked.get())
label.place(relheight=1, relwidth=1)

root.mainloop()

您可以使用

tk.OptionMenu( ... command=function)

運行將獲得選定值的函數,它將更改標簽中的文本


import tkinter as tk

# --- functions ---

def on_select(value):
    label['text'] = value

# --- main ---

root = tk.Tk()

label = tk.Label(root, text='?')
label.pack()

OPTIONS = ["Energy", "Frequency", "Wavelength"]
value_var = tk.StringVar(value=OPTIONS[0])

op = tk.OptionMenu(root, value_var, *OPTIONS, command=on_select)
op.pack()

root.mainloop()   

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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