Python Tkinter etiket işlevi başında değişmeyecek

oy
2

Ben CSV Excel dosyalarını dönüştüren bir program için bir kullanıcı arabirimi oluşturmak için Python ile Tkinter kullanıyorum.

Bir durum çubuğunda olarak hareket ve textVariable gibi bir stringvar () olarak StatusBarText ayarlamak için bir etiket oluşturdu. inputFileEntry ve outputFileEntry giriş ve çıkış dosyası yollarını içeren textvariables bulunmaktadır.

def convertButtonClick():
    statusBarText.set('Converting...')

    if inputFileEntry.get() == '' or outputFileEntry.get() == '':
        statusBarText.set('Invalid Parameters.')
        return

    retcode = subprocess.('Program.exe' ,shell=true)

    if retcode == 0:
        statusBarText.set('Conversion Successful!')
    else:
        statusBarText.set('Conversion Failed!')

Eğer dönüştür düğmesini tıklayarak bu işlev çağrılır ve her şey durum çubuğu asla söylemek değiştiğine dikkat DIŞINDA iyi çalışıyor 'dönüştürülüyor ...'.

Giriş veya çıkış ya boşsa durum çubuğu metin parametrelerini geçersiz değişti olacak ve dönüş kodu bağlı başarı ya da başarısızlık olarak değişecektir. Sorun şu ki, asla dönüşür olan 'dönüştürülüyor ...'

Ben kopyalanıp ifadeleri ise içine tam çizgi yapıştırılan ve iyi çalışıyor, ama nedense sadece asla altişlem koşular önce değişmesi ettik zaman onun fonksiyonun üstünde. Herhangi bir yardım büyük takdir.

Oluştur 30/03/2009 saat 18:38
kaynak kullanıcı
Diğer dillerde...                            


2 cevaplar

oy
3

Nasıl Etiket oluşturuyorsunuz? Bu küçük deney kurulum:

from Tkinter import *
class LabelTest:

    def __init__(self, master):
        self.test = StringVar()

        self.button = Button(master, text="Change Label", command=self.change)
        self.button.grid(row=0, column=0, sticky=W)

        self.test.set("spam")
        self.testlabel = Label(master, textvariable = self.test).grid(row = 0,column = 1)
    def change(self):

        self.test.set("eggs")



root = Tk()
root.title("Label tester")
calc = LabelTest(root)

root.mainloop()

Ve çalışıyor. Eğer "textVariable = StatusBarText" yerine "text = StatusBarText.get ()" nin kullandığınızdan emin olun mı?

Cevap 30/03/2009 saat 20:14
kaynak kullanıcı

oy
10

Tek bir yöntem çağrısında tüm bu yapıyoruz beri GUI asla size alt işlemine başlamadan önce güncellemek için bir şans olur. update_idletasks göz atın () diyoruz ...

dan http://infohost.nmt.edu/tcc/help/pubs/tkinter/universal.html

w.update_idletasks() Uygulama olaylarını ele bittikten ve yeni olaylar için beklemek geri ana döngü gitti dek genellikle ertelenir çünkü böyle yeniden boyutlandırma ve widget'lar yeniden çizilmesi olarak ekrana güncellemede bazı görevler, boşta görevleri denir.
Uygulamanın bir sonraki rölantide önce haberdar olmak için ekran zorlamak istiyorsanız, herhangi bir widget'ı () yöntemini w.update_idletasks diyoruz.

Cevap 30/03/2009 saat 20:16
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more