[英]Drawing on tkinter canvas from command line
我閱讀了一些關於 tkinter 的教程(基礎),並學習了如何創建一個主循環並向其中添加 gui 元素。 還學習了如何將動作綁定到按鈕小部件。
現在我想這樣做:
示例:我在控制台上編寫帶有參數的命令,並且一些圖形元素被添加到畫布(並且畫布在之后更新)。
有什么可能嗎,也許與線程有關? 你能指出一個你認為最合理的方向嗎?
這是通過標准input
功能從控制台獲取用戶輸入的簡單演示。 這種技術有點笨拙,因為我們必須明確告訴 Tkinter 通過單擊按鈕(或其他一些 GUI 事件)來獲取輸入字符串,但這對您的應用程序來說可能不是什么大問題。
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:”提示。 輸入輸入后,字符串將復制到標簽。 如果您在輸入行之前再次單擊該按鈕,將會發生 Bad Things™。 :)
想出了這個:
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 讀取命令然后打開對話框來設置命令參數會更好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.