Label versetzt - fehlerhafte Ausrichtung

Fragen zu Tkinter.
Antworten
elfriso27
User
Beiträge: 3
Registriert: Mittwoch 20. August 2014, 11:53

Hallo,

Mache gerade meine ersten Gehversuche mit Python. Der Nachfolgende Code liest den seriellen Port und gibt dessen Inhalt in ein Label aus.
Das erste Label soll lediglich die Beschreibung für das zweite enthalten, dessen Wert permanent verändert wird.

Funktioniert auch alles soweit, außer dass das 2. Label leicht nach oben versetzt ist. Wie bekomme ich das hin, dass das Label genau auf gleicher Höhe neben dem ersten ist?

Code: Alles auswählen

# -*- coding: utf-8 -*-
from serial import *
#from Tkinter import *
import Tkinter

serialPort = "/dev/ttyACM0"
baudRate = 9600
ser = Serial(serialPort, baudRate, timeout=0, writeTimeout=0)

#mache TKinter Fenster
root = Tkinter.Tk()
root.wm_title("Reading Serial")


lbl_zuwert1=Tkinter.Label(root, text="Wert 1 beträgt: ",anchor=CENTER)
#lbl_zuwert1.pack(padx=0, pady=10, side=LEFT)
lbl_zuwert1.grid(row=0, column=0)
lbl_wert1=Tkinter.Label(root,text="Hallo")
#lbl_wert1.pack(padx=5, pady=20, side=RIGHT)
lbl_wert1.grid(row=0, column=1)

#mache SerialBuffer
serBuffer = ""

def readSerial():
    while True:
        c = ser.read()

        #wurde was gelesen?
        if len(c) == 0:
            break
        #hole Buffer außerhalb der Funktion
        global serBuffer

        #check ob char ein delimeter
        if c == '\r':
            c='' #kuebeln

        if c == '\n':
            serBuffer += "\n"

        #Schreibe Zeile oben in txt
            ##txt_1.insert('0.0', serBuffer)
            lbl_wert1.config(text=str(serBuffer))
            serBuffer = ""
        else:
            serBuffer += c

    root.after(10, readSerial) #check serial again soon
    

# after initializing serial, an arduino may need a bit of time to reset
root.after(100, readSerial)

root.mainloop()
BlackJack

Kann ich nicht nachvollziehen.
elfriso27
User
Beiträge: 3
Registriert: Mittwoch 20. August 2014, 11:53

Schorlem
User
Beiträge: 40
Registriert: Dienstag 3. Juni 2014, 16:37

Nun ja, die einfachst und offensichlichste Möglichkeit wäre es natürlich, die Newlines erst gar nicht zu 'serBuffer' hinzuzufügen. Ich kann jetzt nicht spontan sagen, ob du die jemals brauchen wirst.
Ansonsten änderst du den "grid"-Aufruf folgendermaßen ab:

Code: Alles auswählen

lbl_zuwert1.grid(row=0, column=0, sticky=(Tkinter.N,Tkinter.W))
Damit "klebt" das Label quasi an der oberen, linken Ecke.
Gleiches solltest du für das andere Label machen, damit beide Widgets beim Skalieren des Fensters mitskaliert werden.
Diese Nachricht wurde maschinell erstellt und ist daher ohne Unterschrift gültig.
elfriso27
User
Beiträge: 3
Registriert: Mittwoch 20. August 2014, 11:53

Vielen Dank! Das hat mir geholfen.
Antworten