2017-12-15 3 views
0

Also meine Absicht ist, wenn der Benutzer einen der Knöpfe anklickt, damit der Rest der anderen Knöpfe auch beim Anklicken nichts ausführt, also im Grunde, um die Knöpfe daran zu hindern, ihre Befehle auszuführen, wenn der Benutzer NUR klickt, wenn sie geklickt haben vorher in einem anderen Knopf, weiß ich nicht, ob ich mich ausgedrückt gut so tut mir leid, wenn ich dind't aber hier ist mein Code:Wie kann ich einen Button-Befehl stoppen, wenn in Python auf eine andere Schaltfläche geklickt wird?

from tkinter import * 
import random  

screen = Tk()  

ticket = random.randint(1,3)  

def test(): 
    def test1(): 
     if ticket == button1: 
      button_1 = Button(screen, text="RIP", fg="white", bg="red", width=15, height=2) 
      button_1.grid(row=0, column=0, sticky="w") 
     else: 
      button_2 = Button(screen, text="+1", fg="white", bg="green", width=15, height=2) 
      button_2.grid(row=0, column=0, sticky="w") 
    def test2(): 
     if ticket == button2: 
      button_3 = Button(screen, text="RIP", fg="white", bg="red", width=15, height=2) 
      button_3.grid(row=0, column=1, sticky="w") 
     else: 
      button_4 = Button(screen, text="+1", fg="white", bg="green", width=15, height=2) 
      button_4.grid(row=0, column=1, sticky="w") 
    def test3(): 
     if ticket == button3: 
      button_5 = Button(screen, text="RIP", fg="white", bg="red", width=15, height=2) 
      button_5.grid(row=0, column=2, sticky="w") 
     else: 
      button_6 = Button(screen, text="+1", fg="white", bg="green", width=15, height=2) 
      button_6.grid(row=0, column=2, sticky="w")  

    ticket = random.randint(1,3)  

    button1 = Button(screen, text="1", fg="white", bg="blue", width=15, height=2, command=test1) 
    button1.grid(row=0, column=0, sticky="w") 
    button1 = 1  

    button2 = Button(screen, text="2", fg="white", bg="blue", width=15, height=2, command=test2) 
    button2.grid(row=0, column=1, sticky="w"+"e"+"n"+"s") 
    button2 = 2  

    button3 = Button(screen, text="3", fg="white", bg="blue", width=15, height=2, command=test3) 
    button3.grid(row=0, column=2, sticky="e") 
    button3 = 3  

button1 = Button(screen, text="START", fg="black", bg="orange", width=25, height=2, command=test) 
button1.grid(row=1, columnspan=3, sticky="w"+"e"+"n"+"s")  

screen.mainloop() 

Antwort

4

Sie den Zustand der anderen Tasten zu DISABLED einstellen können sie bis grau aus und verhindern Sie Klicks. Dies wäre der ideale Ort, um eine Unterklasse zu verwenden, die ihre Instanzen verfolgt.

from tkinter import * 
import random 

screen = Tk() 

class MykoButton(Button): 
    instances = [] 

    def __init__(self, master=None, **kwargs): 
     super().__init__(master, command=self.run, **kwargs) 
     self.instances.append(self) 

    def run(self): 
     for button in self.instances: 
      if button is not self: 
       button.config(state=DISABLED) 
     if random.randint(1,3) == 1: 
      self.config(text="RIP", fg="white", bg="red") # update the button 
     else: 
      self.config(text="+1", fg="white", bg="green") 

def test(): 
    for i in range(3): 
     button = MykoButton(screen, text="1", fg="white", bg="blue", width=15, height=2) 
     button.grid(row=0, column=i) 

button1 = Button(screen, text="START", fg="black", bg="orange", width=25, height=2, command=test) 
button1.grid(row=1, columnspan=3, sticky="w"+"e"+"n"+"s") 

screen.mainloop() 

Beachten Sie auch, dass ich den Code geändert, um die geklickten Schaltfläche zu aktualisieren, anstatt eine neue Schaltfläche oben drauf zu setzen.

+0

Ja, das ist mir aufgefallen! :) Danke für Ihre Hilfe. – Naji

Verwandte Themen