Seite 1 von 1
Scrollbar mit Entries
Verfasst: Montag 28. September 2015, 16:17
von DMD
hey,
ich bin grad damit beschäftigt mir ein Tkinter-Entry-Fenster mit Scrollbar zu erstellen.
komm aber nicht weiter...
Code: Alles auswählen
from Tkinter import *
master = Tk()
master.title('GUI-Verwaltung')
master.geometry('300x300+485+50')
scrollbar = Scrollbar(master)
scrollbar.pack(side=RIGHT, fill=Y)
listbox = Listbox(master, yscrollcommand=scrollbar.set)
listbox.pack(side=LEFT, fill=BOTH)
for i in range(100):
en = Entry(master, width=18, relief="raised",font=('Arial', 9, 'bold'), bg='#eeeee0', fg="#000000000", justify='center')
en.insert(END, str(i))
en.pack()
scrollbar.config(command=listbox.yview)
master.mainloop()
Wie kann man nun die Scrollbar mit den Entries verknüpfen ohne Anzeige der Listbox?
Hoffe ich hab net zu viel quatsch gemacht

Re: Scrollbar mit Entries
Verfasst: Montag 28. September 2015, 17:47
von BlackJack
@DMD: Was willst Du bei den Entries denn scrollen? Oder willst Du die Entries selbst scrollen, also mehr haben als auf einmal angezeigt werden? Dann würde man einen `Frame` mit den Entries bestücken und den `Frame` dann auf einem `Canvas` anzeigen, denn ein `Canvas` kann Scrollbalken haben. Oder man nimmt ein vernünftiges GUI-Rahmenwerk wo man sich solche grundlegenden Sachen nicht selber basteln muss.
Re: Scrollbar mit Entries
Verfasst: Montag 28. September 2015, 18:59
von Alfons Mittelmeyer
@BlackJack Ein paar Sätze nützen DMD nichts. Zeig ihm doch wie das geht:
Code: Alles auswählen
import tkinter as tk
root = tk.Tk()
def container(parent):
scrollbar=tk.Scrollbar(parent,orient='vertical')
scrollbar.pack(side='right',fill='y',expand='false')
canvas=tk.Canvas(parent,bd=0,highlightthickness=0)
canvas.pack(fill='both', expand='true')
frame = tk.Frame(parent,)
frame.pack(side='bottom',anchor='nw')
# -------------- make a frame with a vertical scrollbar ------------------------------------
canvas.config(yscrollcommand=scrollbar.set)
scrollbar.config(command=canvas.yview)
interior_id = canvas.create_window(0, 0, window=frame,anchor='nw')
# -------------- <Configure> events for the scrollbar frame ------------------------------------
def canvas_configure(event,me=canvas,frame=frame,int_id = interior_id):
if me.winfo_reqwidth() != frame.winfo_width(): me.itemconfigure(int_id, width=me.winfo_width())
canvas.bind("<Configure>",canvas_configure)
def frame_configure(event,me=frame,canvas=canvas):
canvas.config(scrollregion="0 0 %s %s" % (me.winfo_reqwidth(), me.winfo_reqheight()))
if me.winfo_reqwidth() != canvas.winfo_width(): canvas.config(width=me.winfo_reqwidth())
if me.winfo_reqheight() > 340: canvas.config(height=340)
else: canvas.config(height=me.winfo_reqheight())
frame.bind("<Configure>",frame_configure)
# -------------- Create the entries ------------------------------------
def container(parent):
for i in range(100):
entry = tk.Entry(parent)
entry.delete(0,'end')
entry.insert(0,"Eintrag "+str(i+1))
entry.pack()
container(frame)
container(root)
root.mainloop()
Re: Scrollbar mit Entries
Verfasst: Dienstag 29. September 2015, 21:50
von DMD
hey, danke alfons.
ich möchte eine tabelle scrollen können, die größer ist, als der bildschirm anzeigen kann.
ich habe eine tabelle mit entries, deren layout ich so wie sie ist (mit entries) behalten will.
die ursprünglichen entries in einem normalen Tkinter-fenster sehen einfach besser aus. ich weiß auch nicht, ob man die frame mit den entries an das
vorherige entrie aussehen anpassen kann. die ürsprünglichen entries machen sich vom aussehen
einfach total gut in der tabelle.
wo finde ich den so ein GUI-Rahmenwerk mit (vernünftigen) ursprünglichen entries?
Re: Scrollbar mit Entries
Verfasst: Dienstag 29. September 2015, 22:11
von Alfons Mittelmeyer
Re: Scrollbar mit Entries
Verfasst: Dienstag 29. September 2015, 23:36
von BlackJack
@DMD: Ob Du die Entries in das Hauptfenster oder in ein `Frame` steckst ist vom aussehen her egal.
Die anderen GUI-Rahmenwerke haben hier jeweils ein eigenes Unterforum.
Re: Scrollbar mit Entries
Verfasst: Dienstag 29. September 2015, 23:42
von Alfons Mittelmeyer
@DMD Kannst Dir natürlich auch überlegen, das vertikale Scrolling noch um horizontales zu erweitern.