检查按钮和比例冲突

2024-03-29 14:51:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我的Checkbutton小部件有问题。每次我选中它,上面的scale小部件上的滑块都会自动移动到1,取消选中Checkbutton小部件会将scale小部件设置为0。这两个小部件并不打算以任何方式相互关联,但由于某种原因,其中一个部件中的值的更改会影响另一个部件。有谁能向我解释为什么会发生这种情况,以及我今后如何避免这些问题?你知道吗

    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 选中滑块上的复选框后,滑块设置为56,滑块本身设置为1。你知道吗

编辑: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()

Tags: self部件columnrootvariabletkgridrow
1条回答
网友
1楼 · 发布于 2024-03-29 14:51:56

Tk小部件的variable=参数必须是Tk变量(由Tk.IntVar公司()或类似呼叫)。您的代码传递Q和RS,这是普通的Python变量;您创建的Tk变量是没有意义的,因为您从不在任何地方使用它。Tk变量有一种Python变量不具备的特殊能力:它们可以附加观察者,这允许小部件在修改变量时自动更新自己。你知道吗

Tk变量的Python表示基本上就是变量的Tk名称。Q和RS恰好有相同的值,所以它们都引用Tk端的同一个变量-这就是为什么scale和checkbox看起来是链接的。你知道吗

相关问题 更多 >