Canvas/Striche in Tkinter Fenster

Fragen zu Tkinter.
Antworten
Jones.Indiana
User
Beiträge: 8
Registriert: Sonntag 15. März 2020, 15:18

Hallo an alle,

ich würde gerne in mein Fenster was ich zur Programmadministration mit Eingabefenstern etc aufgebaut farbige Striche und Boxen zur besseren Übersicht einzelner Felder einbauen.
Wenn ich jedoch ein Canvas dazusetze, dann verschiebt sich das Fenster. Weiss jemand wie man einfach in dieses Fenster ein farbige paar Striche mit entsprechenden x und y Werten setzt, ohne dass das Fenster zerschossen wird?
Danke an alle.
Jones
Benutzeravatar
peterpy
User
Beiträge: 188
Registriert: Donnerstag 7. März 2013, 11:35

Hallo Jones,
Du solltest das Canvas in dein Fenster platzieren, oder das Canvas als Fenster nehmen und die übrigen Widgets im Canvas anordnen.
Gruss
Peter
Jones.Indiana
User
Beiträge: 8
Registriert: Sonntag 15. März 2020, 15:18

Danke Dir Peter für die flotte Antwort,
da bist Du aber an einen Doofen geraten. Das ist zu hoch für mich....
Das Programm baut alle Eingabe und Ausgabe Boxen etc im Fenster auf (s.u. als Auszug). Das Canvas habe ich erstmal mit # wieder deaktiviert.
Wie platziere ich denn "das Canvas in das Fenster?"
LG
Jones

......
fenster = Tk()

fenster.title('Administrator: Start-Seite')
fenster.geometry('1000x600')

#w = Canvas(fenster, width=200, height=100)
#w.pack()
#w.create_line(0, 100, 200, 0, fill="red", dash=(4, 4))
#w.create_rectangle(50, 25, 150, 75, fill="blue")

rahmen = Frame(fenster, relief='ridge', borderwidth=5)
rahmen.pack(fill='both', expand=1)

label1 = Label(rahmen, text='Anker-Ton in Hz')
label1.place(x=10, y=70)
label2 = Label(rahmen, text='Länge der einzelnen Töne in msec')
label2.place(x=10, y=120)
.......
Benutzeravatar
peterpy
User
Beiträge: 188
Registriert: Donnerstag 7. März 2013, 11:35

Hallo Jones,

schau doch mal hier:
https://anzeljg.github.io/rin2/book2/24 ... index.html

meine Idee:

Code: Alles auswählen

from tkinter import Canvas, Frame, Label, Tk

fenster = Tk()

fenster.title('Administrator: Start-Seite')
fenster.geometry('1000x600')

w = Canvas(fenster, width=1000, height=600, bg = "white")
w.pack()

rahmen = Frame(relief='ridge', borderwidth=5, width = 600,
               height = 40)

platzhalter0 = Label(rahmen)
platzhalter0.grid(row = 0, column = 0)

label1 = Label(rahmen, text='Anker-Ton in Hz', anchor = "w", width = 30)
label1.grid(row = 1, column = 0)

platzhalter1 = Label(rahmen, height = 3) 
platzhalter1.grid(row = 2, column = 0)

label2 = Label(rahmen, text='Länge der einzelnen Töne in msec', anchor = "w",
               width = 30)
label2.grid(row = 3, column = 0)

platzhalter2 = Label(rahmen)
platzhalter2.grid(row = 4, column = 0)

rahmeninCanvas = w.create_window(100,100, window = rahmen, anchor = "w")

w.create_line(0, 600, 1000, 0, fill="red", dash=(4, 4))
w.create_rectangle(450, 325, 550, 275, fill="blue")

fenster.mainloop()
Gruss
Peter
Antworten