Я хочу, чтобы полученные данные были центрированы на окне tk вместо печати сверху. Поэтому я хочу написать код с помощью виджета ярлыка виджета TEXT. (Виджет TEXT отпечатан сверху и LABEL виджет центрирует данные в окне tk). Виджет-метка имеет элементы управления «ANCHOR», где текст размещается, если у виджета больше места, чем требуется для текста. По умолчанию используется anchor = CENTER, который центрирует текст в доступном пространстве. Но в моем коде я всегда удаляю и вставляю данные все время, согласно моим знаниям, опции удаления и вставки доступны только в текстовом виджете, возможно ли это в виде ярлыка Label. , пожалуйста, помогите мне. Я попытался изменить свой код bt с помощью виджета LABEL, но couls не удалось. может кто-то, пожалуйста, помогите мне изменить свой код, чтобы использовать виджет ярлыка. спасибо.конвертировать код из Tkinter TEXT в Tkinter LABEL
import serial
import threading
import Queue
import Tkinter as tk
from Tkinter import *
class SerialThread(threading.Thread):
def __init__(self, queue):
threading.Thread.__init__(self)
self.queue = queue
def run(self):
s = serial.Serial('COM11',9600)
while True:
if s.inWaiting():
text = s.readline(s.inWaiting())
self.queue.put(text)
class App(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
self.geometry("1360x750")
frameLabel = tk.Frame(self, padx=40, pady =40)
self.text = tk.Text(frameLabel, wrap='word', font='TimesNewRoman 40',
bg=self.cget('bg'), relief='flat')
frameLabel.pack()
self.text.pack()
self.queue = Queue.Queue()
thread = SerialThread(self.queue)
thread.start()
self.process_serial()
def process_serial(self):
firstitem = True
while self.queue.qsize():
try:
new = self.queue.get()
if firstitem:
self.text.delete(1.0, 'end')
firstitem = False
self.text.insert('end', new)
except Queue.Empty:
pass
self.after(100, self.process_serial)
app = App()
app.mainloop()
ок, спасибо. я постараюсь с этим. – vaasu
Я столкнулся с такой ошибкой. Traceback (последний последний вызов): Файл «C:/Python27/python/Новая папка/тестирование 1.py», строка 44, в app = App() Файл «C:/Python27/python/Новая папка/testing 1.py ", строка 26, в __init__ bg = self.cget ('bg'), рельеф = 'flat') Файл" C: \ Python27 \ lib \ lib-tk \ Tkinter.py ", строка 2537, in __init__ Widget .__ init __ (self, master, 'label', cnf, kw) Файл «C: \ Python27 \ lib \ lib-tk \ Tkinter.py», строка 2036, в __init__ (widgetName, self ._w) + extra + self._options (cnf)) TclError: плохое расстояние экрана «word» –
vaasu
@vaasu Это происходит потому, что вы используете опцию 'wrap = 'word'' в конструкторе метки. Если вы замените текст ярлыком, вы должны использовать [правильные параметры] (http://effbot.org/tkinterbook/label.htm#Tkinter.Label.config-method), которые варьируются от виджета к виджету. –