首页 > 解决方案 > 多单选按钮选择

问题描述

在列表“soil_cat”中,元组中的第一个值对应于名为“spectra_type1”的第一个 Radiobutton,元组中的秒值对应于名为“spectra_type2”的第二个 Radiobutton。我想通过选择 radiobuttons 通过“soil_categ_define”函数打印值。换句话说,我希望“if”语句通过选择“spectra type1”来声明specta的值为1,通过选择“spectra type2”来声明specta的值为2。现在它仍然为空,因为没有执行函数“地震”。

从 tkinter 导入 *

类 q(): def init (self,master): self.master=master

def soil_categ_define(self):
    print (self.var.get())
   
    return
def earthquake(self):
    self.master=Tk()
    self.quake=Toplevel(bg='white',height=200,width=100)
    self.quake.geometry('500x200')
   
    global specta
    specta=None
    spect1=IntVar(self.quake,0)
    spect1.set(0)
    def spect_set():
        return  spect1.get()
    
    self.spectra_type1=Radiobutton(self.quake,bg='white',
        text='Elastic type 1',
        indicatoron = 0,variable=spect1,value=0,command=spect_set)
    self.spectra_type1.grid(column=7,row=1)
    self.spectra_type1=Radiobutton(self.quake,bg='white',
    text='Elastic type 2',indicatoron = 0,variable=spect1,
     value=1,command=spect_set)
    self.spectra_type1.grid(column=7,row=2)
    
    
   
    self.soil_categ=[('A',1.00,1.00),('B',1.20,1.35),('C',1.15,1.50),('D',1.35,1.80),('E',1.40,1.60)]
    self.var=DoubleVar()
    self.var.set(1.0)
    self.soil_cat={}
    j=0
    specta=spect_set()
    for i,parameter1,parameter2 in self.soil_categ:
        if specta==0 or specta==None:
            parameter=parameter1
        elif specta==1:
            parameter=parameter2
        j+=1
           self.soil_cat['soil{0}'.format(i)]=Radiobutton(self.quake,text=i,variable=self.var,
 value=parameter,bg='white',command=self.soil_categ_define).grid(column=j+1,row=1)
                            
    

if __name__=='__main__':
    gr=q(None) 

    gr.earthquake()

标签: pythonpython-3.xtkinterradio-button

解决方案


解决方案是不同的程序。想不同的找到解决办法。将所有命令插入一个函数 (soil,categ_define)。

from tkinter import *

class q():
def __init__(self) :
    
    return 
def soil_categ_define(self):
    
    self.soil_S_parameter=[(1.00,1.00),(1.20,1.35),(1.15,1.50),
    (1.35,1.80),(1.40,1.60)]
    print (self.soil_S_parameter[self.var.get()-1][self.spect1.get()])
    return
       
def earthquake(self):
    self.quake=Tk()
    #self.quake=Toplevel(bg='white',height=200,width=100)
    self.quake.geometry('500x200')
         
    self.spect1=IntVar()
    self.spect1.set(0)
          
    self.spectra_type1=Radiobutton(self.quake,bg='white',
    text='Τύπος ελαστικού φάσματος 1',indicatoron = 0,
    variable=self.spect1,value=0,command=self.soil_categ_define)
    self.spectra_type1.grid(column=7,row=1)
    self.spectra_type1=Radiobutton(self.quake,bg='white',
     text='Τύπος ελαστικού φάσματος 2',indicatoron = 
     0,variable=self.spect1,value=1,command=self.soil_categ_define)
    self.spectra_type1.grid(column=7,row=2)
        
    self.soil_categ=['A','B','C','D','E']
    self.var=IntVar()
    self.var.set(1)
    self.soil_cat={}
    j=0
             
    for i,in self.soil_categ:
        j+=1
    self.soil_cat['soil{0}'.format(i)]=Radiobutton(self.quake,text=i,
   variable=self.var,value=j,bg='white',
  command=self.soil_categ_define).grid(column=j+1,row=1)

if __name__=='__main__':
   gr=q() #Μπαίνουν όσες τιμές είναι για αρχικοποίηση
   gr.earthquake()

推荐阅读