如何将标签上的文本从 python 中的 shell 更改为输入或 raw_input?
How do I change change the text on a label to an input or raw_input from shell in python?
我想使用 python 制作一个基本程序,它将使用 raw_input() 或 input() 要求用户从 shell 输入一个字符串,而不是在 python 应用程序 window 中。我有这个代码:
import sys
from tkinter import *
Gui = Tk()
Gui.geometry('450x450+200+200')
Gui.title = ('lol')
label = Label(text='my Label').pack()
def ask_text():
new_text = input('Input text here:\n')
change_text(new_text)
def change_text(new_text):
Label2 = Label(text=new_text).pack()
if new_text != 'stop_program':
ask_text()
ask_text()
当我 运行 这样做时,python 应用程序一直在 mac 上弹跳,它确实要求我输入,但应用程序仅在我输入 [=21] 后打开=].我基本上希望它打开,然后在我输入要放置的内容后立即更改标签。我最好如何使用 tkinter 来做到这一点?
谢谢
我修改了你的代码:
from tkinter import *
class MyWindow(Frame):
def __init__(self, parent, *pargs, **kwargs):
Frame.__init__(self, parent, *pargs, **kwargs)
self.label_text = StringVar()
self.label_text.set("my label")
self.label = Label(self, textvariable = self.label_text)
self.label.pack()
self.after(1000, self.ask_text)
def ask_text(self):
while True:
new_text = input('Input text here: \n')
if new_text == 'stop_program':
self.master.quit()
break;
self.label_text.set(new_text)
self.label.update()
def change_text(self, new_text):
self.label["text"] = new_text
if new_text != 'stop_program':
self.ask_text()
Gui = Tk()
Gui.geometry('450x450+200+200')
Gui.title = ('lol')
my_window = MyWindow(Gui)
my_window.pack()
mainloop()
抱歉,没有提供解释,因为我现在不能花更多时间在这上面。只需尝试代码。但请注意一件事:因为您从控制台获得用户输入,tkinter window 在此期间将被阻止。它将更新标签,但您希望能够关闭它,因为 tkinter 想要响应任何事件,因为 python 卡在控制台输入处。这里可能需要一些多线程。正如我在对该问题的评论中所写,最好是从 tkinter Entry 小部件而不是控制台请求用户输入。
我想使用 python 制作一个基本程序,它将使用 raw_input() 或 input() 要求用户从 shell 输入一个字符串,而不是在 python 应用程序 window 中。我有这个代码:
import sys
from tkinter import *
Gui = Tk()
Gui.geometry('450x450+200+200')
Gui.title = ('lol')
label = Label(text='my Label').pack()
def ask_text():
new_text = input('Input text here:\n')
change_text(new_text)
def change_text(new_text):
Label2 = Label(text=new_text).pack()
if new_text != 'stop_program':
ask_text()
ask_text()
当我 运行 这样做时,python 应用程序一直在 mac 上弹跳,它确实要求我输入,但应用程序仅在我输入 [=21] 后打开=].我基本上希望它打开,然后在我输入要放置的内容后立即更改标签。我最好如何使用 tkinter 来做到这一点?
谢谢
我修改了你的代码:
from tkinter import *
class MyWindow(Frame):
def __init__(self, parent, *pargs, **kwargs):
Frame.__init__(self, parent, *pargs, **kwargs)
self.label_text = StringVar()
self.label_text.set("my label")
self.label = Label(self, textvariable = self.label_text)
self.label.pack()
self.after(1000, self.ask_text)
def ask_text(self):
while True:
new_text = input('Input text here: \n')
if new_text == 'stop_program':
self.master.quit()
break;
self.label_text.set(new_text)
self.label.update()
def change_text(self, new_text):
self.label["text"] = new_text
if new_text != 'stop_program':
self.ask_text()
Gui = Tk()
Gui.geometry('450x450+200+200')
Gui.title = ('lol')
my_window = MyWindow(Gui)
my_window.pack()
mainloop()
抱歉,没有提供解释,因为我现在不能花更多时间在这上面。只需尝试代码。但请注意一件事:因为您从控制台获得用户输入,tkinter window 在此期间将被阻止。它将更新标签,但您希望能够关闭它,因为 tkinter 想要响应任何事件,因为 python 卡在控制台输入处。这里可能需要一些多线程。正如我在对该问题的评论中所写,最好是从 tkinter Entry 小部件而不是控制台请求用户输入。