从命令行

时间:2016-09-25 14:36:33

标签: python canvas tkinter

我在tkinter上阅读了一些教程(基础),并学习了如何创建一个mainloop并为其添加gui元素。还学习了如何将操作绑定到按钮小部件。

现在我想这样做:

  1. 启动tkinter canvas
  2. 能够从控制台读取命令并在这些命令之后更新画布。
  3. 例如: 我在控制台上用参数编写命令,并且一些图形元素被添加到画布中(并且画布在之后更新)。

    是否有可能,可能是相关的? 你能指出一个你认为最合理的方向吗?

2 个答案:

答案 0 :(得分:0)

这是一个通过标准input功能从控制台获取用户输入的简单演示。这种技术有点笨重,因为我们必须通过单击Button(或其他一些GUI事件)明确告诉Tkinter获取输入字符串,但这对您的应用程序来说可能不是什么大问题。

import tkinter as tk

root = tk.Tk()
stuff = tk.StringVar()
display = tk.Label(root, textvariable=stuff)
display.pack()

def get_input():
    s = input("CMD: ")
    stuff.set(s)

tk.Button(root, text="Get input", command=get_input).pack()
root.mainloop()

当您点击"Get input"按钮时," CMD:"提示将打印在控制台窗口中。输入输入后,字符串将复制到Label。如果在输入输入行之前再次单击该按钮,将会发生Bad Things™。 :)

答案 1 :(得分:0)

想出了这个:

from Tkinter import *
import random

root = Tk()
width = 800
height = 600

def key(event):
    s = raw_input("CMD: ")

    if s == 'quit':
        root.destroy()

    if s == 'l':
        x1 = random.randint(0,width)
        x2 = random.randint(0,width)
        y1 = random.randint(0,height)
        y2 = random.randint(0,height)
        frame.create_line(x1,y1,x2,y2)
        frame.focus_force()



frame = Canvas(root, width=width, height=height)
frame.bind("<Key>", key)
frame.pack()
frame.focus_set()

root.mainloop()

通过这种方式它有点复杂,因为在控制台上输入内容之前,我必须将焦点重新点击其窗口。也许直接从Tkinter读取命令然后打开用于设置命令参数的对话框会更好。