2016-10-09 5 views
-1

Ich habe ein Problem mit meinem Checkbutton-Widget. Jedes Mal, wenn ich es auswähle, verschiebt sich der Schieberegler im obigen Skalen-Widget von selbst auf 1, wenn das Checkbutton-Widget deaktiviert wird, wird das Scale-Widget auf 0 gesetzt. Beide Widgets sollen aus irgendwelchen Gründen noch nicht miteinander in Beziehung stehen in einem von ihnen beeinflussen die anderen. Kann mir jemand erklären, warum das so ist und wie kann ich solche Probleme in Zukunft vermeiden?Checkbutton und Scale-Konflikt

tk.Label(f7, text=("Jakość")).grid(row=3, column=0) 
    self.jakosc=tk.Scale(f7, orient='horizontal', variable=jakosc) 
    self.jakosc.grid(row=3, column=1) 
    self.rozpinany_sweter=tk.IntVar() 
    tk.Checkbutton(f7, text='Rozpinany',variable=rozpinany_sweter).grid(row=4, column=1) 

In this example der Schieber bis 56, eingestellt, wenn das Kontrollkästchen auf dem Schieber setzt sich auf 1

EDIT Überprüfung: MCVE bereitgestellt:

import tkinter as tk 
from tkinter import ttk as ttk 
RS=0 
Q=0 
class Aplikacja(tk.Frame): 
def __init__(self, *args, **kwargs): 
    tk.Frame.__init__(self, *args, **kwargs) 
    self.grid() 
    self.create_widgets() 
def create_widgets(self): 
    self.jakosc=tk.Scale(root, orient='horizontal', variable=Q) 
    self.jakosc.grid() 
    self.rozpinany_sweter=tk.IntVar() 
    tk.Checkbutton(root, variable=RS).grid() 

root= tk.Tk() 
app= Aplikacja(root) 
root.mainloop() 
+0

Bitte zeigen Sie ein [Minimal, komplettes und überprüfbares Beispiel (MCVE)] (http://www.stackoverflow.com/help/mcve). Die von Ihnen beschriebenen Symptome legen nahe, dass beide Widgets an dieselbe Variable gebunden sind, aber ohne zu sehen, wie Sie beide Variablen definieren, ist es unmöglich, dies mit Sicherheit zu sagen. –

Antwort

0

Der variable= Parameter Tk widgets MUSS eine Tk-Variable sein (erstellt von Tk.IntVar() oder ähnlichen Aufrufen). Ihr Code übergibt Q und RS, die gewöhnliche Python-Variablen sind; Die eine Tk-Variable, die Sie erstellen, ist sinnlos, weil Sie sie nie irgendwo verwenden. Tk-Variablen haben eine spezielle Fähigkeit, die Python-Variablen nicht besitzen: Sie können Beobachter an sie angehängt haben, wodurch sich die Widgets automatisch aktualisieren können, wenn die Variable geändert wird.

Die Python-Repräsentation einer Tk-Variablen ist im Grunde nur der Tk-Name der Variablen. Sowohl Q als auch RS haben den gleichen Wert, also beziehen sie sich beide auf die gleiche Variable auf der Tk-Seite - deshalb scheinen Ihre Skala und das Kontrollkästchen verknüpft zu sein.

Verwandte Themen