Python tkinter接口需要帮助
我正在用tkinter开发一个图形界面。当我打开文件并发送它时,我希望看到标签(命令)中的滚动说明 更准确地说,我不知道如何将此指令Python tkinter接口需要帮助,python,tkinter,Python,Tkinter,我正在用tkinter开发一个图形界面。当我打开文件并发送它时,我希望看到标签(命令)中的滚动说明 更准确地说,我不知道如何将此指令print('Sending:'+l)与此指令Label(Frame1,text=“Commande”,background='NavajoWhite2').pack(padx=165,pady=10) 多谢大家 from tkinter import * from tkinter import filedialog from tkinter import ttk,
print('Sending:'+l)
与此指令Label(Frame1,text=“Commande”,background='NavajoWhite2').pack(padx=165,pady=10)
多谢大家
from tkinter import *
from tkinter import filedialog
from tkinter import ttk, Text
#nom de la fenetre
moha = Tk()
moha.title('Emetteur G-code Universel')
moha.geometry("2500x2500")
moha['bg']= 'NavajoWhite2'
##################
##################
#le chemin de recherche #
def file(tk_event=None, *args, **kw):
fiile = filedialog.askopenfilename(filetypes=[('txt files','.txt'),('all files','.*')])
file_path.set(fiile)
fichier = open(fiile, "r")
print(fiile)
content_bis = fichier.readlines()
for line in content_bis:
T.insert(END, line)
fichier.close()
# Créer les différentes Frame
Outil = LabelFrame(moha, text="Outil")
Outil.place(x=500)
Outil['bg']= 'NavajoWhite2'
label = Label(Outil, text='Fichier : ', background='NavajoWhite2')
label.place(x=10, y=114)
file_path = StringVar()
entry = Entry(Outil, textvariable=file_path)
entry.place(x=60, y=114)
################
def moh():
# Open grbl serial port
s = serial.Serial('/dev/ttyS0',115200)
# Open g-code file
f = open(file_path.get(), "r");
# Wake up grbl
s.write("\r\n\r\n".encode('utf8'))
time.sleep(2) # Wait for grbl to initialize
s.flushInput() # Flush startup text in serial input
# Stream g-code to grbl
for line in f:
l = line.strip() # Strip all EOL characters for consistency
print ('Sending: ' + l)
s.write((l + '\n').encode("utf8")) # Send g-code block to grbl
grbl_out = s.readline().decode("utf8") # Wait for grbl response with carriage return
print (' : ' + grbl_out)
# Wait here until grbl is finished to close serial port and file.
raw_input(" Press <Enter> to exit and disable grbl.")
# Close file and serial port
f.close()
s.close()
#Créer la barre de recherche
#################
o = LabelFrame(moha, text="Fase des commandes")
o.place(y=400)
o['bg']= 'NavajoWhite2'
Label(o, background='NavajoWhite2').pack(padx=670,pady=120)
Frame1 = Frame(o, borderwidth=3, relief=GROOVE, background='NavajoWhite2')
Frame1.place(x=0, y=5)
Label(Frame1, text="Commande",background='NavajoWhite2').pack(padx=165, pady=10)
#################
b1= Button(Outil, text ="Commande", background='White').place(x=10, y=20)
b2= Button(Outil, text ="Fichier", background='White').place(x=110, y=20)
b3= Button(Outil, text ="Côntrole de la machine",
background='White').place(x=190, y=20)
b4= Button(Outil, text ="Selectionner un fichier",background='White',
command=file).place(x=235, y=112)
b5= Button(Outil, text ="Envoyer",background='White', command=moh).place(x=30, y=150)
b6= Button(Outil, text ="Pause",background='White').place(x=110, y=150)
b7= Button(Outil, text ="Annuler",background='White').place(x=180, y=150)
Label(Outil, text="", background='NavajoWhite2').pack(padx=300, pady=150)
################
################
S = Scrollbar(Outil, background='NavajoWhite2')
T = Text(Outil, height=19, width=28)
S.place(x=380, y=10)
T.place(x=400, y=0)
S.config(command=T.yview)
T.config(yscrollcommand=S.set)
从tkinter导入*
从tkinter导入文件对话框
从tkinter导入ttk,文本
#诺姆·德拉费内特
moha=Tk()
moha.名称(“Emetteur G-code Universel”)
moha.几何学(“2500x2500”)
莫哈['bg']='NavajoWhite2'
##################
##################
#里切赫化学酒店#
def文件(tk_事件=无,*参数,**千瓦):
fiile=filedialog.askopenfilename(文件类型=[('txt文件','.txt'),('all文件','.'.'))
文件路径集(fiile)
fichier=打开(fiile,“r”)
打印(文件)
content_bis=fichier.readlines()
对于内容_bis中的行:
T.插入(结束,行)
fichier.close()
#Créer les différentes框架
Outil=LabelFrame(moha,text=“Outil”)
出口位置(x=500)
Outil['bg']='NavajoWhite2'
label=label(Outil,text='Fichier:',background='NavajoWhite2')
标签位置(x=10,y=114)
文件路径=StringVar()
entry=entry(Outil,textvariable=file\u路径)
入口位置(x=60,y=114)
################
def moh():
#打开grbl串行端口
s=serial.serial('/dev/ttyS0',115200)
#打开g代码文件
f=打开(文件路径get(),“r”);
#唤醒grbl
s、 写入(“\r\n\r\n”。编码('utf8'))
时间。睡眠(2)#等待grbl初始化
s、 flushInput()#在串行输入中刷新启动文本
#将g代码流到grbl
对于f中的行:
l=line.strip()#去除所有下线字符以确保一致性
打印('发送:'+l)
s、 写入((l+'\n')。编码(“utf8”)#将g代码块发送到grbl
grbl_out=s.readline().decode(“utf8”)#等待带有回车符的grbl响应
打印(“:”+grbl_out)
#在此处等待,直到grbl完成关闭串行端口和文件。
原始输入(“按下退出并禁用grbl”)
#关闭文件和串行端口
f、 关闭()
s、 关闭()
#里切切酒吧
#################
o=LabelFrame(moha,text=“Fase des commandes”)
o、 地点(y=400)
o['bg']='NavajoWhite2'
标签(o,background='NavajoWhite2').pack(padx=670,pady=120)
Frame1=框架(o,边框宽度=3,浮雕=凹槽,背景='NavajoWhite2')
框架1.位置(x=0,y=5)
标签(Frame1,text=“Commande”,background='NavajoWhite2').pack(padx=165,pady=10)
#################
b1=按钮(Outil,text=“command”,background=“White”)。位置(x=10,y=20)
b2=按钮(Outil,text=“Fichier”,background='White')。位置(x=110,y=20)
b3=按钮(Outil,text=“控制机器”,
背景='白色')。位置(x=190,y=20)
b4=按钮(Outil,text=“Selectionner un fichier”,background=“White”,
命令=文件).place(x=235,y=112)
b5=按钮(Outil,text=“Envoyer”,background='White',command=moh)。位置(x=30,y=150)
b6=按钮(Outil,text=“Pause”,background=“White”)。放置(x=110,y=150)
b7=按钮(Outil,text=“环形器”,background='White')。位置(x=180,y=150)
标签(Outil,text=”“,background='NavajoWhite2').pack(padx=300,pady=150)
################
################
S=滚动条(Outil,background='NavajoWhite2')
T=文本(外底,高度=19,宽度=28)
S.place(x=380,y=10)
T.位置(x=400,y=0)
S.config(命令=T.yview)
T.config(yscrollcommand=S.set)
如Novel所述,为了正确存储对小部件的引用,您应该将小部件创建与小部件对齐分开(另请参见)
其次,要在for
循环中实时显示GUI中标签的文本,需要在主窗口上调用.update()
下面是一个示例,展示了这是如何工作的:
import tkinter as tk
from time import sleep
def change_label():
for i in range(5):
label.config(text="iteration " + str(i))
# Update the GUI in real time
root.update()
sleep(1)
root = tk.Tk()
# Create & align a label in 2 steps
label = tk.Label(root, text="hello")
label.pack()
button = tk.Button(root, text="click me", command=change_label)
button.pack()
# Launch the GUI
root.mainloop()
您可以使用
config
方法更新标签的文本或任何属性:Label.config(text='Sending:'+l)
@Novel I don't knowledge:/如果将print('Sending:'+l)
替换为Label.config(text='Sending:'+l)
您将在标签而不是终端中看到更新。这不是你要问的吗?@Novel是的,但我想看看这个标签的更新:label(Frame1,text=“Commande”,background='NavajoWhite2')。pack(padx=165,pady=10)怎么做?非常感谢,也很抱歉给标签起了一个变量名,并使用相同的代码和正确的名称。注意:如果要将标签保存到变量,则必须将pack()
放在单独的一行。