3 svar
60 visningar
Qetsiyah är nöjd med hjälpen!
Qetsiyah 4555
Postad: 24 sep 2020

Problem med tkinter, uppdatera fönstret medan figurer ritas

Hej, se:

Jag har gjort ett textbaserat interface så att användaren kan rita dit trianglar, cirklar och rektanglar av valfri storlek och position. Jag vill därför att fönstret ska uppdateras hela tiden så att infogade figurer faktiskt visas.

Jag har läst här under "Making Your Applications Interactive", och de verkar föreslå "window.mainloop()", men det fungerar inte när jag skriver det på rad 58 (då visas inget fönster alls) eller rad 27 (då frågar programmet inte ens om input till "val" variabeln.

tkinter är avsedd för grafiska användargränssnitt där egentligen ingenting händer förrän användaren gör något i det aktiva fönstret. Det kan exvis vara att flytta muspekaren, klicka med musknappen eller trycka på en tangent. Dessa händelser hanteras av tkinters inbyggda event handlers.

Nyckeln här är just "i det aktiva fönstret". Om man använder input() så sker det i det fönster där du startade applikationen. Fönstret som skapades av tkinter känner inte till detta. Man kan möjligen (har aldrig provat) koda någon inter-process-kommunikation och få de olika fönstren att prata med varandra men det är troligen enklare att helt enkelt använda tkinter enbart. 

Skapa menyer, knappar och/eller formulär i tkinter där användaren kan välja vad den vill göra. Hantera sedan händelser från dem. På sidan du hänvisade till skriver de bl a detta som är en början på att hantera tangentnedtryckningar:

import tkinter as tk

window = tk.Tk()

def handle_keypress(event):
    """Print the character associated to the key pressed"""
    print(event.char)

# Bind keypress event to handle_keypress()
window.bind("<Key>", handle_keypress)

window.mainloop()

Laguna Online 10973
Postad: 25 sep 2020

Det går att rita i fönster samtidigt som man läser input från terminalen. Det är inte så vanligt, men det går och det är väldigt praktiskt. Jag har gjort det men minns inte hur. Jag återkommer.

Qetsiyah 4555
Postad: 25 sep 2020

Återkom inte! Problemet är löst, tsck så mycket Lindehaven

Svara Avbryt
Close