python - 函数中的 Ratiobutton 默认值
问题描述
我想在我的 gui 上添加一个具有默认值的单选按钮(在“数字”和“模拟”之间切换)。以下代码显示默认值 = 按钮上显示的“数字”。
import tkinter as tk
root = tk.Tk()
tk.Label(root, text = 'MPD').grid(row = 1, column = 15)
MPDmode = tk.Frame(root)
MPDmode.grid(row = 2, column = 15)
MPDmode_var = tk.StringVar(value = 'digital')
MPDdigital = tk.Radiobutton(MPDmode, text = 'Digital', variable = MPDmode_var, indicatoron = False, value = 'digital', width = 8)
MPDanalog = tk.Radiobutton(MPDmode, text = 'Analog', variable = MPDmode_var, indicatoron = False, value = 'analog', width = 8)
MPDdigital.grid(row = 0)
MPDanalog.grid(row = 1)
root.mainloop()
但是,如果我在函数中定义内容,则无法显示默认值。IE:
import tkinter as tk
def start():
tk.Label(root, text = 'MPD').grid(row = 1, column = 15)
MPDmode = tk.Frame(root)
MPDmode.grid(row = 2, column = 15)
MPDmode_var = tk.StringVar(value = 'digital')
MPDdigital = tk.Radiobutton(MPDmode, text = 'Digital', variable = MPDmode_var, indicatoron = False, value = 'digital', width = 8)
MPDanalog = tk.Radiobutton(MPDmode, text = 'Analog', variable = MPDmode_var, indicatoron = False, value = 'analog', width = 8)
MPDdigital.grid(row = 0)
MPDanalog.grid(row = 1)
root = tk.Tk()
start()
root.mainloop()
因为我想让我的项目开发更加结构化,所以我想把内容放在一个函数中,在代码中的不同位置调用它来构建GUI。我可以知道我怎样才能做到这一点。
解决方案
在函数中创建时,它看起来像StringVar
得到了 GCed。您可以将其创建StringVar
为全局变量:
def start():
global MPDmode_var
...
MPDmode_var = tk.StringVar(value = 'digital')
但是如果你正在寻找更好的结构,你可以使用一个类来代替:
import tkinter as tk
class Start(tk.Frame):
def __init__(self,master=None,**kwargs):
super().__init__(master,**kwargs)
tk.Label(master, text = 'MPD').grid(row = 1, column = 15)
self.grid(row = 2, column = 15)
self.MPDmode_var = tk.StringVar(value='digital')
MPDdigital = tk.Radiobutton(self, text = 'Digital', variable = self.MPDmode_var,
indicatoron = False, value = 'digital', width = 8)
MPDanalog = tk.Radiobutton(self, text = 'Analog', variable = self.MPDmode_var,
indicatoron = False, value = 'analog', width = 8)
MPDdigital.grid(row = 0)
MPDanalog.grid(row = 1)
root = tk.Tk()
Start(root)
root.mainloop()
推荐阅读
- windows - 在 Windows cmd 中用百分号在引号中传递参数
- dynamics-crm - 如何使用自定义工作流程步骤查找所有工作流程
- python - PySpark:选择性行的滑动窗口
- c# - 如何通过脚本访问 Unity 'Light 2D (Script)' 组件?
- swift - 为什么我的应用程序自 iOS 13 以来一直崩溃?
- mysql - 从 mysql 表结果中删除重复的行
- reactjs - 如何解决“react-native start”上的错误
- javascript - 正则表达式没有返回一致的结果
- django - Django2:如何与 localhost:8000 和子域 analysis.localhost:8000 共享“request.user”?
- python - 文本分析:使用python查找列中最常见的单词