python - 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()
编辑:为澄清添加了上下文
解决方案
问题是这res
是一个局部变量。将其声明为全局以使问题消失。
FWIW,一种更易读的初始化变量的方法是省略第一个参数并像这样设置值:
res = StringVar(value='720p')
推荐阅读
- python - 可以在 Django 中为大型非本地文件流式传输 zip?
- c - strcmp 返回 10 即使字符串相同
- ssis - SSISDB 2019 脚本组件为空白
- bash - 在ansible中转义特殊字符
- django - 如果在 Celery 中将 retry_backoff 设置为 True,max_retries 和 retry_backoff_max 是什么意思?
- postgresql - Postgres:带有可选“WHERE”参数的函数
- php - 如何在php中优先考虑rabbitmq消息?
- java - 使用 iText 签名字段(数字签名与电子签名图像) - 阅读
- java - 根据对象中的变量名而不是字符串正则表达式在springboot中屏蔽敏感数据
- c++ - 推断函数指针的模板参数