【问题标题】:tkinter - Radio button isn't setting default resulttkinter - 单选按钮未设置默认结果
【发布时间】:2020-07-08 23:29:02
【问题描述】:

我正在尝试为我的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()

编辑:为澄清添加上下文

【问题讨论】:

  • 嗨,所以在原始文件中它不起作用,但如果复制到单独的文件中它可以工作吗?这个原始文件是否包含其他代码?也许其他代码干扰了单选按钮。
  • 我添加了一些上下文(大多数 tkinter 的东西),但由于堆栈溢出说代码太多
  • 还有很多 代码您仍然可以删除。问题是关于单选按钮的,所以我们不需要 pytube 或图像或任何线程代码等。

标签: python tkinter radio-button


【解决方案1】:

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

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

res = StringVar(value='720p')

【讨论】:

  • 感谢它的工作,但为什么即使你只在本地使用它也需要全局声明?
  • @CodeForX:您不仅在本地使用它。它必须在main 返回后继续存在,因为小部件在main 返回后继续存在。
猜你喜欢
  • 2020-08-10
  • 2022-01-14
  • 1970-01-01
  • 2020-05-05
  • 1970-01-01
  • 2021-11-14
  • 2021-01-06
  • 2016-11-28
  • 1970-01-01
相关资源
最近更新 更多