Python 在消息窗口中阅读和播放单词
我的代码有问题,word->word=word=str Entry.get input\u text中出现了一条错误消息,这显然是指打印全文,当我希望它在非根窗口但在阅读窗口中工作时,它无法按我所希望的方式工作 这是代码: 从tkinter进口* 导入系统 将tkinter作为tk导入 从tkinter导入消息框 ----- 根=Tk 根标题窗口 ----- 伊库纳沙豆根 函数=Labelroot,文本=选择操作! 函数x=70,y=10 卢埃托伊蒙托库迪醇酸 def读取: 读取窗口=Tk reading_window.titleRead函数 frame=Framereading\u窗口 frame.pack 阅读文本=标签阅读窗口,文本=在框中输入文本! 读取文本。放置X=70,y=10 单词= word=strEntry.getinput\u文本 框架johon kirjoitetaan 输入\文本=入口读取\窗口 输入文本。放置X=55,y=30 卢埃库纳·科科·贾·西约图斯 阅读窗口几何300x300+100+100 卢萨娜·帕尼克·乔卡·托维斯丁 打印按钮=tk.button阅读窗口,文本='显示键入的文本',高度=1,宽度=15,命令=打印1 打印按钮。放置X=80,y=60 text\u a\u tip=Labelreading\u窗口,text=键入的文本将显示在消息窗口中! text_a_tip.placex=50,y=90 def打印1: tk.messagebox.showinfo'Kirjoitetun tekstin tulostus viestiikkunaan',Entry.getinput_text def关闭: 阅读窗口 read\u close\u button=tk.button阅读窗口,文本='关闭阅读功能',高度=1,宽度=20,命令=close 读取关闭按钮。放置X=60,y=270 read.mainloop 卢埃托明托·库迪·洛普 read_function=tk.Buttonroot,text='read function',高度=1,宽度=15,命令=read read_function.placex=55,y=35 ohjleman Loppettamisen koodi alkaa def退出程序: MsgBox=tk.messagebox.askquestion'Quit program','您确定要关闭程序吗?',icon='warning' 如果MsgBox==“是”: 毁灭 sys.exit0 其他: tk.messagebox.showinfo“回来了”,“现在你回来了!” 退出程序按钮=tk.Buttonroot,text='Close program',高度=1,宽度=15,命令=quit\u prog 退出程序按钮。placex=50,y=220 奥杰尔曼·洛佩塔米森·库迪·洛普 ----- ----- 根。geometry250x250+20+60 450x450=leveysxkorkeus+20+40=vasenreuna+yl÷reuna root.mainloopPython 在消息窗口中阅读和播放单词,python,tkinter,Python,Tkinter,我的代码有问题,word->word=word=str Entry.get input\u text中出现了一条错误消息,这显然是指打印全文,当我希望它在非根窗口但在阅读窗口中工作时,它无法按我所希望的方式工作 这是代码: 从tkinter进口* 导入系统 将tkinter作为tk导入 从tkinter导入消息框 ----- 根=Tk 根标题窗口 ----- 伊库纳沙豆根 函数=Labelroot,文本=选择操作! 函数x=70,y=10 卢埃托伊蒙托库迪醇酸 def读取: 读取窗口=Tk re
我真的不知道wordvariable是做什么用的,但我假设您需要它。不能使用在其所在行下定义的变量
word = ""
word = str(Entry.get(input_text)) # input_text is defined below, interpreter doesn't know what is it "input_text" yet.
input_text = Entry(reading_window)
input_text.place(x=55, y=30)
这应该是相当不错的
input_text = Entry(reading_window)
input_text.place(x=55, y=30)
word = ""
word = str(Entry.get(input_text)) # now there is no error
这并不能解决您的问题,因为我看到在函数print1中,您再次使用了imput_text,但它是在不同的函数中定义的,所以它不起作用
def print1():
# input_text is local variable in read function.
tk.messagebox.showinfo('Kirjoitetun tekstin tulostus viestiikkunaan', (Entry.get(input_text)))
要解决您的问题,您可以将input_text作为print1的参数传递,如本工作示例所示
def read():
reading_window = Tk()
reading_window.title("Read function")
frame = Frame(reading_window)
frame.pack()
read_the_text = Label(reading_window, text = "Enter text in the box!")
read_the_text.place(x = 70, y = 10)
input_text = Entry(reading_window)
input_text.place(x=55, y=30)
word = ""
word = str(Entry.get(input_text))
reading_window.geometry("300x300+100+100")
# pass input_text to print1
print_button = tk.Button(reading_window, text = 'Show typed text', height = 1, width = 15, command = lambda: print1(input_text))
print_button.place(x=80, y=60)
text_a_tip = Label(reading_window, text ="The typed text is displayed in\nthe message window!")
text_a_tip.place(x = 50, y = 90)
def print1(input_text):
# print1 takes now one argument and has reference to input_text
tk.messagebox.showinfo('Kirjoitetun tekstin tulostus viestiikkunaan', (Entry.get(input_text)))
def close():
reading_window.destroy()
read_close_button = tk.Button(reading_window, text = 'Close the reading function', height = 1, width = 20, command = close)
read_close_button.place(x = 60, y = 270)
read.mainloop()
还可以考虑使用不同于place的几何体管理器,它甚至写在effbot文档中:
对于普通的窗口和对话框布局,使用place通常不是一个好主意;要使事情按其应有的方式运转,需要做很多工作。为此,请使用包或网格管理器