阿花大人_ 2021-02-05 19:47 采纳率: 33.3%
浏览 61

tkinter中variable的问题__Python

def Newwindow():
    # 定义单选按钮的响应函数
    def callRB():
        print(t.get())
        for i in range(4):
            if (t.get() == i):
                root1 = Tk()
                Label(root1, text='你的选择是' + language[i][0] + '!', fg='red', width=20, height=6).pack()
                Button(root1, text='确定', width=3, height=1, command=root1.destroy).pack(side='bottom')
    myWindow = Tk()
    myWindow.title('我好垃圾啊!')
    t = IntVar()
    # 列表中存储的是元素是元组
    language = [('python', 0), ('C++', 1), ('C', 2), ('Java', 3)]
    Label(myWindow, text='选择一门你喜欢的编程语言').pack(anchor=W)
    # for循环创建单选框

    for lan, num in language:
        Radiobutton(myWindow, text=lan, value=num, command=callRB, variable=t).pack(anchor=W)
        print(t,t.get())

    # 进入消息循环
    myWindow.mainloop()
 
      在函数中,variable=t,这个设置中不正确,使得t.get()结果均为0,而在下面这段代码中确实设置的正确的,不知道为什么
from tkinter import*
#初始化Tk()
myWindow=Tk()
myWindow.title('Python GUI Learning')
v=IntVar()
#列表中存储的是元素是元组
language=[('python',0),('C++',1),('C',2),('Java',3)]
#定义单选按钮的响应函数
def callRB():
    for i in range(4):
        if (v.get()==i):
            root1 = Tk()
            Label(root1,text='你的选择是'+language[i][0]+'!',fg='red',width=20, height=6).pack()
            Button(root1,text='确定',width=3,height=1,command=root1.destroy).pack(side='bottom')
Label(myWindow,text='选择一门你喜欢的编程语言').pack(anchor=W)
#for循环创建单选框
for lan,num in language:
    Radiobutton(myWindow, text=lan, value=num, command=callRB, variable=v).pack(anchor=W)
    print(v,v.get)
#进入消息循环
myWindow.mainloop()

望大佬指点

  • 写回答

1条回答 默认 最新

  • coagenth 2021-02-05 20:11
    关注

    你需要在Radiobutton(myWindow, text=lan, value=num, command=callRB, variable=v).pack(anchor=W)这一行前加一条语句,v.set(num),v.get()就会变成0,1,2,3

    评论

报告相同问题?

悬赏问题

  • ¥15 matlab有关常微分方程的问题求解决
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?
  • ¥100 求三轴之间相互配合画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable