Variables 下拉选择的tkinter变量为空
我试着在tkinter中编写一个应用程序,从你从下拉菜单中选择的文件中加载随机行,并在文本窗口中显示所选行Variables 下拉选择的tkinter变量为空,variables,python-3.x,drop-down-menu,tkinter,ttk,Variables,Python 3.x,Drop Down Menu,Tkinter,Ttk,我试着在tkinter中编写一个应用程序,从你从下拉菜单中选择的文件中加载随机行,并在文本窗口中显示所选行 insert\u text中的变量“var”似乎不返回所选的“option”,而是返回一个“空”字符串,导致以下错误: “找不到文件错误”(FileNotFoundError:[Errno2]没有此类文件或 目录:“”) 请帮忙 #!/usr/bin/env python # Python 3 import tkinter from tkinter import ttk import r
insert\u text
中的变量“var”似乎不返回所选的“option”,而是返回一个“空”字符串,导致以下错误:
“找不到文件错误”(FileNotFoundError:[Errno2]没有此类文件或
目录:“”)
请帮忙
#!/usr/bin/env python
# Python 3
import tkinter
from tkinter import ttk
import random
class Application:
def __init__(self, root):
self.root = root
self.root.title('Random Stuff')
ttk.Frame(self.root, width=450, height=185).pack()
self.init_widgets()
var = tkinter.StringVar(root)
script = var.get()
choices = ['option1', 'option2', 'option3']
option = tkinter.OptionMenu(root, var, *choices)
option.pack(side='right', padx=10, pady=10)
def init_widgets(self):
ttk.Button(self.root, command=self.insert_txt, text='Button', width='10').place(x=10, y=10)
self.txt = tkinter.Text(self.root, width='45', height='5')
self.txt.place(x=10, y=50)
def insert_txt(self):
var = tkinter.StringVar(root)
name = var.get()
line = random.choice(open(str(name)).readlines())
self.txt.insert(tkinter.INSERT, line)
if __name__ == '__main__':
root = tkinter.Tk()
Application(root)
root.mainloop()
这是因为您只是创建了一个空的
StringVar
,以后不会修改它,因此返回一个空字符串
OptionMenu采用命令
参数,该参数在每次选择另一个选项时调用指定的方法。现在,您可以调用这样的方法,替换您的insert\u txt
:
def __init__(self):
# ...
self.var = tkinter.StringVar()
self.options = tkinter.OptionMenu(root, var, *choices, command=self.option_selected)
# ...
def option_selected(self, event):
name = self.var.get()
# The stuff you already had
此外,您必须清空
文本
小部件,否则前面的文本将保留。我认为Entry
小部件也更适合这样做。非常感谢,这真的帮了我很大的忙!!!:)遗憾的是,我还不能投票,因为我似乎缺少代表:-/谢谢你编辑我的问题!:)我看到它看起来很奇怪,但当我试图编辑它时,它就像我第一次输入它一样-/