Tkinter Butona her tıkladığımda Buton metnini label metnine nasıl aktarabilirim ? (çoklu butonlar için)

Merhabalar, programlama konusunda yeniyim ve basit bir program yapmak istiyorum.Diyelim ki elimizde 118 tane elementin sembolleri, türkçe tam adları ve atom numaraları mevcut. Elementlerin sembolleri ile 118 tane buton oluşturup herhangi bir butona tıkladığımızda o elemente ait türkçe isimleri ile atom numaralarını label textine nasıl yazdırabilirim , Bunun için hangi yolları izlemem gerek ? Yardımcı olursanız sevinirim şimdiden teşekkürler.

Merhaba.

Mantık şu şekilde :

hidrojen_numarası = "1"

def hidrojen_configle():
    yazı.config(text = hidrojen_numarası) 

yazı = Label()
yazı.pack()

hidrojen_tuş =  Button(text = "Hidrojen" + hidrojen_numarası, command = hidrojen_configle)
hidrojen_tuş.pack()

Her buton için ayrı fonksiyon yazmanın lüzumu yok:

import tkinter as tk
from functools import partial

element_sembolleri = [("H", "Hidrojen"), ("He", "Helyum"), ("Li", "Lityum")] # örnek

root = tk.Tk()


butonlar = []

def on_click(element):
    print(element)

for i, j in element_sembolleri:
    b = tk.Button(text = i, command = partial(on_click, j))
    b.pack()
    butonlar.append(b)

root.mainloop()
1 Beğeni

@EkremDincel in çözümü @AnkaMMOFPS in çözümünden daha kullanışlı o kesin


@EkremDincel sayenizde yeni bir şey öğrendim :slightly_smiling_face: :upside_down_face: :slightly_smiling_face: :blush:

partial hazır bir fonksiyon sadece, şöyle de yapılabilirdi:

import tkinter as tk

element_sembolleri = [("H", "Hidrojen"), ("He", "Helyum"), ("Li", "Lityum")] # örnek

root = tk.Tk()


butonlar = []

def on_click(element):
    print(element)

for i, j in element_sembolleri:
    b = tk.Button(text = i, command = lambda j=j: on_click(j))
    b.pack()
    butonlar.append(b)

root.mainloop()

Ön tanımlı argüman kullanmamızın sebebi late binding.

o nedir?

Olsun öğrenmiş oldum :blush:

Şurada konuşulmuş galiba:

Mantığı belirttim çözümü göstermedim :slight_smile: