首页 > 解决方案 > tkinter - 单选按钮未设置默认结果

问题描述

我正在尝试为我设置一个默认值,Radiobuttons但由于某种原因在文件中我需要它以使其无法正常工作,但是如果我将代码复制并粘贴到测试文件中,它就可以工作

from pytube import YouTube
from tkinter import *
import threading

root= Tk()

def main():

    frame = LabelFrame(root, padx=20,pady=50)
    frame.pack(padx=0, pady=0)

    box = Entry(frame, width=100 )
    box.insert(0,'enter url:    ')
    box.grid(row=7, column=0, columnspan=4, padx=5, pady=20 )
    t1 =threading.Thread(target=handshake_link, args=[box])
    submit = Button(frame, text='check url',command=lambda:t1.start())
    submit.grid(row=7,column=4)
    
    img = Image.open('gui/shaz.png').resize((300,200))
    test_img = ImageTk.PhotoImage(img)

    pic = Button(frame, image=test_img, command=download_time())
    pic.image = test_img
    pic.grid(row=0,column=2, columnspan =1, rowspan=6) 
     
    resoulutions = [
        '360p','480p','720p','1080p'
    ]
   
    ### problematic code
    res = StringVar(None,'720p')
    # tried res.set('720p')
    num = 1
    for resoulution in resoulutions:
        x = Radiobutton(frame ,text=resoulution,variable=res, value=resoulution)
        x.grid(row=num, column= 3)
        num += 1
    ####
main()
root.mainloop()

编辑:为澄清添加了上下文

标签: pythontkinterradio-button

解决方案


问题是这res是一个局部变量。将其声明为全局以使问题消失。

FWIW,一种更易读的初始化变量的方法是省略第一个参数并像这样设置值:

res = StringVar(value='720p')

推荐阅读