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
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
Şurada konuşulmuş galiba:
Mantığı belirttim çözümü göstermedim