Birden fazla entry kullanmak

python
tkinter

#1

tkinter de buttona tıkladığımda fonksiyon ile entry oluşturuyorum. Buttona her tıkladığımda yeni bir entry oluşuyor.
entry.insert(“end”, “selam”) dediğimde en son oluşturduğum entrye selam yazıyor. İlk oluşturduğum entry araçlarına nasıl veri ekleyebilirim?
kodlar burda herkese tşkkrler ;


import tkinter as m_tk

p_ = m_tk.Tk()
p_.geometry("400x400+500+200")

a = 0
b = 0
def f_():
    global a
    global b
    a += 35
    b += 35

    e_ = m_tk.Entry()
    e_.place(x = a, y = b)

b_ = m_tk.Button(p_, text = "OLUŞTUR", command = f_)
b_.place(x = 5, y = 5)

p_.mainloop()

#2

f_() fonksiyonunun dışında bir tane hiç bir işlem yapmayan fonksiyon oluşturun. Sonra f_() fonksiyonunun içinde b’nin komut argümanını bu fonksiyon olacak şekilde değiştirin.


#3

işlem yapmayan fonksiyonu pass ilemi oluşturacam?


#4

Evet, pass'i kullanacaksınız.
Ve f_() fonksiyonunun içine de b_configure(command=hic_bir_islem_yapmayan_fonksiyonun_ismi) yazacaksınız.


#5

bu ne işime yarayacak anlayamadım f_() içinde işlem yapmayan bir button oluşturduk değilmi?


#6

Hayir f icinde mevcut butonun komut ayarini degistireceksiniz. Bu şu isinize yarayacak: Butona ikinci kez tikladiginizda tekrar widget olusmayacak.


#7

ben widget oluşmasını ama farklı isimde oluşmasını istiyorum maksat hangi entryi kullanıyorsam ona veri yollansın
Baştada dediğim gibi her buttona bastığımda bir entry oluşturuyorum ama en son oluşturduğum entry den veri alıp yollayabiliyorum ben en son oluşan entrye değilde istediğim entrye veri yollayıp almak istiyorum


#8

Sizin bahsettiğiniz durumla alakalı olduğunu sanıyorum. Daha önce aşağıdaki başlığı incelemiş miydiniz bilmiyorum ama, bir paylaşayım dedim.


#9

Bu arada, programınızı çalıştırdığımda düğmeye her basışımda widgetler çoğaldı. Bu durumu önlemek için buttonun görevini değiştirmesi gerekir.

yani:


def _pass():
    pass

gibi hiç bir işlem yapmayan bir fonksiyon yazarsınız.

Bu fonksiyon, yapacağı yeni işlem olarak sizin f_() fonksiyonunun içinde düğmeye kazandırılır.

def f_():
    b_.configure(command=_pass)
    global a
    global b
    a += 35
    b += 35

    e_ = m_tk.Entry()
    e_.place(x = a, y = b)

Böylece her düğmeye basıldığında yeni bir widget oluşmaz.


#10

ben zaten çoğalmasını istiyorum orada sorun yok sorun örneğin 5 tane çoğaltım entryden veri almak istersem son çoğaltılan entryden yani 5. entryden veri alıyor ben nasıl 2. veya 3. entryden veri alabilirim yada yollayabilirim?


#11

Bence self ile entryi çoğaltırsam olur ama nasıl yapacağımı tam olarak bilmiyorum


#12

Oluşturduğunuz entry leri bir liste içine atın. Onlara ulaşmak istediğinizde listenin indexine göre ulaşın. Mesela listenin adı entryler olsun. Oluşturduğunuz tüm entrylerin içine “merhaba” yazalım:

for i in entryler:
    i.delete(0,END)
    i.insert(0,"Merhaba")

#13

Merhaba, sorunuzu yanlış anlamışım sanırım. Aşağıdaki kodları da bir inceleyin isterseniz.

#!/usr/bin/python3
# -*- coding: utf-8 -*-

import tkinter as m_tk

p_ = m_tk.Tk()
p_.geometry("400x400+500+200")

a = 0
b = 0

entries = []


def f_():
    global a
    global b
    a += 35
    b += 35

    e_ = m_tk.Entry()
    e_.place(x = a, y = b)
    entries.append(e_)

b_ = m_tk.Button(p_, text = "OLUŞTUR", command = f_)
b_.place(x = 5, y = 5)


def veri_al():
    for i in entries:
        if i.get() != "":
            print("Entry no: " + str(entries.index(i) + 1), ", Mesaj: " + i.get())

b2 = m_tk.Button(p_, text="Veri Al", command=veri_al)
b2.place(x=100, y=5)

p_.mainloop()

#15

Aşağıdaki kodları bir inceleyin isterseniz.

#!/usr/bin/python3
# -*- coding: utf-8 -*-

import tkinter as m_tk

p_ = m_tk.Tk()
p_.geometry("400x400+500+200")

a = 0
b = 0

entries = []


def f_():
    global a
    global b
    a += 35
    b += 35

    e_ = m_tk.Entry()
    e_.place(x = a, y = b)
    entries.append(e_)

b_ = m_tk.Button(p_, text = "OLUŞTUR", command = f_)
b_.place(x = 5, y = 5)
son_mesaj = []


def veri_al():
    count = 0
    for i in entries:
        if i.get() != "":
            if i.get() not in son_mesaj:
                son_mesaj.append(i.get())
            if son_mesaj[-1] in i.get():
                count = entries.index(i)
    print("Entry no: "+ str(count + 1) + ", Mesaj: " + son_mesaj[-1])

b2 = m_tk.Button(p_, text="Veri Al", command=veri_al)
b2.place(x=100, y=5)

p_.mainloop()

#16

Çözdüğüm için silmiştim genede her türlü yardımınız için çok teşekkür ederim.