2016-10-09 19 views
-1

Checkbuttonウィジェットに問題があります。私がそれを選択するたびに、上記のスケールウィジェットのスライダは1に移動し、Checkbuttonウィジェットの選択を解除するとScaleウィジェットが0に設定されます。両方のウィジェットは何らかの理由でそれらのうちの1つでは、他のものに影響します。誰が私にこのことが起こっているのかを説明することはできますか?チェックボタンとスケールの衝突

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 スライダは1

EDITスライダセット自体のチェックボックスをチェックした後、56に設定されている:MCVEが設け:

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

[最小限、完全で実証可能な例(MCVE)](http://www.stackoverflow.com/help/mcve)をご覧ください。あなたが書いている症状は、両方のウィジェットが同じ変数に結びついていることを示唆していますが、両方の変数をどのように定義するか見ることなく、確実に言うことは不可能です。 –

答えて

0

Tkウィジェットにvariable=パラメータTk変数(Tk.IntVar()や同様の呼び出しによって作成されたもの)でなければなりません。あなたのコードは普通のPython変数であるQとRSを渡します。あなたが作成した1つのTk変数は無意味です。決してどこにも使用しないからです。 Tk変数には、Python変数が持っていない特別な能力があります:変数が変更されたときにウィジェットが自動的に更新できるように、ウォッチャーをアタッチすることができます。

Tk変数のPython表現は、基本的に変数のTk名だけです。 QとRSは同じ値を持つので、両方ともTk側の同じ変数を参照しています。そのため、スケールとチェックボックスがリンクされているように見えます。