繁体   English   中英

如何更改将标签上的文本更改为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()来要求人员从外壳而不是在python应用程序窗口中输入字符串。 我有以下代码:

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上不断弹跳,它的确要求我输入,但该应用程序仅在我放置stop_program之后打开。 我基本上希望它打开,然后在键入内容后立即更改标签。 我将如何最好使用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窗口将被阻止。 它将更新标签,但是您希望能够将其关闭,因为tkinter希望响应任何事件,因为python卡在了控制台输入上。 这里可能需要一些多线程。 正如我在对该问题的评论中所写的那样,最好是从tkinter Entry小部件而不是从控制台请求用户输入。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM