Python 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,

我正在用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, 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()
放在单独的一行。