tkinter Radiobutton字符串选择器

问题描述 投票:0回答:1

前段时间我写了一个Python3程序,允许我连接到许多计算机中的一台。

#! /usr/bin/env python3

from tkinter import *
import os

Computers = [
    'RaspberryPi3',
    'PiUbuntu',
    'Thylacoleo']

def sel():
    cmd = "open afp://" + Computers[var.get()] + ".local"
    os.system( cmd )

root = Tk()      # create tkinter object
root.title("Connect to Computer")   # give the window a title...
root.minsize(250, 100)
var = IntVar()
button=0

for cc in Computers:
    R1 = Radiobutton(root, text=cc, variable=var, value=button, command=sel)
    R1.pack( anchor = W )
    button += 1

root.mainloop()

这是有效的,我虽然通过使用Dictionary来安装nfs共享来调整它很简单。不幸的是,我似乎无法让它工作。

我以前的努力从每个按钮返回一个整数。但这不适用于Dictionary,我想获得一个返回的字符串值。

Computers = {
    'RaspberryPi3': 'Pi3',
    'PiUbuntu': 'PiUbuntu',
    'Ubuntu-T': 'Thylaco'
    }

def sel():
    print("selection", tvar)
    selection = "You selected the option " + tvar

root = Tk()      # create tkinter object
root.title("Connect to Computer")   # give the window a title...
root.minsize(250, 100)
# var = IntVar()
# tvar = StringVar()
tvar = str()
button=0

for cc in list(Computers.keys()):
#     R1 = Radiobutton(root, text=cc, variable=var, value=button, command=sel)
    R1 = Radiobutton(root, text=cc, variable=tvar, value=cc, command=sel)
#   R1 = Radiobutton(root, text=cc, textvariable=tvar, command=sel)
    R1.pack( anchor = W )

root.mainloop()

我知道我可以创建一个列表,并使用整数,但我试图了解如何返回一个字符串。我已经阅读了文档,看了很多链接,但没有发现任何相关的例子。

tvar = StringVar()导致错误: -

TypeError: must be str, not StringVar
python-3.x tkinter
1个回答
2
投票

我怀疑你有问题(你没有显示完整的Traceback)

selection = "You selected the option " + tvar

你必须使用tvar.get()tvar获取值/字符串

selection = "You selected the option " + tvar.get()
© www.soinside.com 2019 - 2024. All rights reserved.