【问题标题】:how to use if else in radio button at 2 function如何在 2 功能的单选按钮中使用 if else
【发布时间】:2020-03-15 04:25:57
【问题描述】:

我有以下脚本。在 self.dis (rad.button 3) 中,如果处于活动状态,我想乘以 *10,如果不活动,则乘以 *100

import tkinter.messagebox
import tkinter as tk
from tkinter import ttk

class Resistor:

def set_band1(self, value):
    self.var_band1.set(value)
    self.update_labels()


def update_labels(self):
    self.dis = 0
    if self.dis != 0:
        v1 = self.var_band1.get()*10
    else:
        v1 = self.var_band1.get()*100

def __init__(self, root):
options = {'font': 'bold', 'bg': 'dimgrey'}

    self.dis  = tk.Radiobutton(resistor_frame, text="3 Band", value=0, command=self.enable_band3, **options)
    self.dis.grid(column=1, row=0

    self.en   = tk.Radiobutton(resistor_frame, text="4 Band", value=1, command=self.disable_band3, **options)
    self.en.grid(column=4, row=0)

【问题讨论】:

  • 您在 if 语句之前立即将 self.dis 设置为零。你为什么这样做?
  • cz 我想从单选按钮中按值选择条件我认为 self.dis 的值为零,所以如果值不为零,它将乘以 *10,反之亦然
  • 如果将其设置为零,if self.dis != 0 将永远不会为真。
  • 如果 self.dis == 0 为真,则其相同。但“其他”条件不起作用。
  • 为什么你认为它不起作用? v1 是一个局部变量,您是否尝试添加打印语句来验证它是否已正确设置? v1 应该代表什么?

标签: python button tkinter radio-button


【解决方案1】:

单选按钮需要关联的 tkinter 变量才能正常工作。你需要创建这个变量,然后你可以在你的条件语句中使用这个变量。

def __init__(self, root):
    ...
    self.disvar = tk.IntVar(value=0)
    self.dis  = tk.Radiobutton(..., variable=self.disvar, ...)
    self.en   = tk.Radiobutton(..., variable=self.disvar, ...)
    ...

def update_labels(self):
    if self.disvar.get() != 0:
        v1 = self.var_band1.get()*10
    else:
        v1 = self.var_band1.get()*100

您似乎也遇到了设置v1 的问题,但v1 是一个局部变量。您可能需要设置全局变量或类的属性。只设置一个局部变量然后返回什么都不做,因为当函数返回时局部变量被破坏了。

【讨论】:

    【解决方案2】:
     def update_labels(self):
        if self.disvar.get() != 0:
            v1 = self.var_band1.get()*100
        else:
            v1 = self.var_band1.get()*10
    
    def __init__(self, root):
    
        self.disvar = tk.IntVar(value=0)
        self.dis  = tk.Radiobutton(resistor_frame, variable=self.disvar, text="3 Band", value=0, command=self.enable_band3, **options)
        self.dis.grid(column=1, row=0)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-13
      • 2023-03-12
      • 2014-05-31
      • 2013-08-03
      • 1970-01-01
      • 1970-01-01
      • 2012-08-05
      • 2016-03-19
      相关资源
      最近更新 更多