2017-09-18 18 views
-1

Mein Tkinter-Fenster nicht geöffnet, nachdem ich hinzufügen, während wahre Funktion. Wie kann ich das zur Arbeit bringen? Es funktioniert ohne wahr zu sein, aber ich brauche es in meiner Funktion.Tkinter-Fenster nicht geöffnet

from tkinter import * 
from random import random 
import sys 
import random 



maxcount = int (input("How many times ")) 
i = 1 
cats = Tk() 
cats.wm_title("maxcount test") 
cats.geometry("500x500") 

def black(): 
    while True: 
     i+1 
     if i == 5: 
      break 

Button(cats, text="Start", command=black()).grid(row=1, column=0) 


Label(cats, text="How many times:").grid(row=0, column=0) 

cats.mainloop() 
+1

Gibt es einen Grund, warum Sie die 'while' Schleife haben müssen? Im Moment ist alles, was Sie tun, eine Variable auf 5 zu setzen, das braucht * keine 'while'-Schleife zu tun. Gibt es etwas, das du weglässt, was die 'while' Schleife notwendig macht? –

Antwort

1

Sie haben zwei Fehler:
- i + 1 wahrscheinlich i += 1 gemeint, dann i muffig global so erklärt werden, kann es im Rahmen der Funktion modicied werden.
- der Button-Befehl war black(), was ein Aufruf der Funktion schwarz ist. Was wir brauchen, ist ein Verweis auf die Funktion black (ohne ())

Eine Sache zu beachten: wie @Sierra_Mountain_Tech bemerkt, wie es ist, muss der Benutzer zunächst Eingang eine ganze Zahl für die tkinter App zu starten .

from tkinter import * 
from random import random 
import sys 
import random 

maxcount = int (input("How many times ")) 
i = 1 

cats = Tk() 
cats.wm_title("maxcount test") 
cats.geometry("500x500") 

def black(): 
    global i 
    while True: 
     i += 1 
     if i >= 5: # <-- changed from i == 5 at @Sierra_Mountain_Tech suggestion 
      break 

Button(cats, text="Start", command=black).grid(row=1, column=0) 
Label(cats, text="How many times:").grid(row=0, column=0)  

cats.mainloop() 
+0

Auch wenn Sie mehr als einmal Start drücken, wird das Programm einfrieren. Ändere wenn 'i == 5' zu' if i> = 5' –

+1

Guter Fang, danke. –

+1

Eine letzte Sache, die Sie vielleicht zu Ihrer Antwort hinzufügen möchten. Der Benutzer verwendet vor dem Start der tkinter-App "Eingabe", so dass das Programm erst geöffnet wird, wenn es eine Ganzzahl in der Konsole eingibt. Sie scheinen zumindest für tkinter neu zu sein, so dass dies etwas ist, was ihnen nicht bewusst ist. –