Merhaba,
Konuyu şu şekilde özetleyebilirim:
Kodunu aşağıda ilettiğim yapı ile Combox’tan bir seçimi yapınca her saniye random sayı üreterek text olarak yazdırıyorum yalnız combobox üzerinden mevcuttaki seçim tekrar seçilirse bişey yapmamasını yerine başka bir seçim yapınca ise önce mevcut döngüyü sonlandırmasını sonra ise bu yeni seçimin döngüsünü başlatmasını istiyorum after_cancel ile yapıyı durduruyorum ama combobox’ın event’i <> ile durdurduğum bu yapıyı yeniden başlatamadım ve mevcut seçim ise bişey yapma kısmını henüz eklemediğim kod aşağıdadır.
Teşekkürler şimdiden yardımınız için.Kod kolay anlaşılır olması için örnek amaçlı bu şekilde paylaşıldı asıl kullanım alanında işlevsel bir özelliğe sahip olacak saçma görünmesine aldırış etmeyin lütfen:)
import tkinter as tk
from tkinter import ttk
import time
import random
class model(tk.Tk):
def __init__(self):
super().__init__()
self.title('Yeni Pencere')
self.resizable(0, 0)
self.geometry('500x200')
self['bg'] = 'black'
self.style = ttk.Style(self)
self.style.configure(
'TLabel',
background='white',
foreground='red')
# label
self.label = ttk.Label(
self,
text="0",
font=('Digital-7', 40))
self.label.pack(expand=True)
# Combobox creation
self.n = tk.StringVar()
self.monthchoosen = ttk.Combobox(self, width = 27, textvariable = self.n)
# Adding combobox drop down list
self.monthchoosen['values'] = (' January', ' February',' March',' April',' May',' June')
self.monthchoosen.pack()
self.monthchoosen.bind("<<ComboboxSelected>>",self.start_func)
def start_func(self):
# schedule an update every 1 second
self.monthchoosen.after(1000, self.update)
def random_func(self):
return random.randint(-20,5000)
def update(self):
""" update the label every 1 second """
self.label.configure(text=self.random_func())
self.monthchoosen.after(1000, self.update)
if __name__ == "__main__":
deneme = model()
deneme.mainloop()