Sida 1 av 1

Python Tkinter GUI problem

Postat: 26 oktober 2014, 18:10:23
av Guldancistrus
Hej!
Jag försöker lära mig hur man gör ett gui med Tkinter i Python, bland annat för att göra chattprogrammet jag pratade om tidigare.
Vad jag försöker göra nu är att skriva ut en ström av text i en textruta.

Kod: Markera allt

# -*- coding: utf-8 -*-
from Tkinter import *
import time
import thread

def loopen():

    while TRUE:
        T.insert(END, "EN NY RAD 123456789\n")
        time.sleep(1)
        

root = Tk()
T = Text(root, height = 15, width = 35)
T.pack(side = LEFT, fill = Y)
S = Scrollbar(root)
S.pack(side = RIGHT, fill = Y)
S.config(command = T.yview)
T.config(yscrollcommand = S.set)
T.insert(END, "Hej!\nDetta är en textruta\nmed\nflera\nrader\n")

thread.start_new_thread(loopen, ())

root.mainloop()


Mitt största problem var först att all kod jag sätter innan root.mainloop() körs före fönstret öppnas och all kod jag sätter efter root.mainloop() körs när fönstret har stängts. Då tänkte jag att jag kunde sätta koden som skriver ut text i textrutan i en ny tråd.
Det verkar funka bra, men jag får ett fel när jag stänger rutan.

Kod: Markera allt

Unhandled exception in thread started by <function loopen at 0xb6dac304>
Traceback (most recent call last):
  File "/home/transistor256/Dokument/Python/Texttest.py", line 9, in loopen
    T.insert(END, "EN NY RAD 123456789\n")
  File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 3071, in insert
    self.tk.call((self._w, 'insert', index, chars) + args)
RuntimeError: main thread is not in main loop
Hur löser jag detta? :?

Re: Python Tkinter GUI problem

Postat: 26 oktober 2014, 20:05:56
av Zlim00
Hur har du tänkt att "loopen" ska stanna?
Din tråd kommer att fortsätta skriva till textrutan efter att du har stängt det fönstret, och vad ska hända då?

Re: Python Tkinter GUI problem

Postat: 26 oktober 2014, 21:46:39
av Guldancistrus
Aha, nu fattar jag! :)
Jag måste alltså på något sätt kommunicera med "loopen" och tala om för den att det är dags att stänga.
Hur kommunicerar man mellan trådar?
Edit:
Det verkar som att man använder köer för att kommunicera, ska läsa på om dem.

Re: Python Tkinter GUI problem

Postat: 27 oktober 2014, 10:12:56
av SvenW
Jag kan ingenting om TkInter, men jag misstänker att det snarare är 'bind' (i kontexten Tkinter) och 'callbacks' du bör studera.
Och att det är client-server-tänkande som gäller.

Re: Sv: Python Tkinter GUI problem

Postat: 9 november 2014, 21:30:08
av Guldancistrus
Aha, ska kolla det.