Zwei kurze Fragen
Ach du hast noch nicht mal die Bilder in den Speicher geladen. Dazu gibt es die Klasse Tkinter.PhotoImage oder Tkinter.BitmapImage. Wie es mit der PIL funktioniert steht auch dabei.
Take it easy Mates!
wie mache ich es am besten die widgets in einem Fenster zu platzieren? Zur Zeit habe ich es mit "anchor = W" in der pack-methode gemacht, jedoch kann ich dann nur immer untereinander zum Beispiel Radiobuttons, erzeugen. Ich hätte aber gerne untereinander und nebeneinander radiobuttons(Die aber untereinander nichts miteinander zu tun haben. Sozusagen kann man bei den untereinander etwas auswhlen und bei den nebeneinander am Rand vom Fenster. Wie muss ich sie platzieren?
LG
LG
@questlove: Du könntest die zusammengehörenden Widgets in einen `Frame` stecken (mit `pack()` oder `grid()`) und die `Frame`\s dann in das Fenster (mit `pack()` oder `grid()`). Mit `pack()` kann man nicht nur untereinander, sondern auch nebeneinander anordnen. Aber innerhalb eines Container-Widgets bitte immer nur in eine Richtung, sonst wird es unverhersehbar was die Layout-Engine daraus macht.
Iwie gehts bei den radiobuttons aber nicht..
Die kann ich dann auch nur noch untereinander zeigen.
beispiel mit und ohne Radiobuttons..
ohne:
mit:
Die kann ich dann auch nur noch untereinander zeigen.
beispiel mit und ohne Radiobuttons..
ohne:
Code: Alles auswählen
import Tkinter as tk
class hauptprogramm():
def __init__(self,root):
#bestimmung von root
self.root = root
Programmbreite = 1000
Programmhoehe = 700
ProgrammX_Position = 100
ProgrammY_Position = 100
root.geometry('%dx%d+%d+%d' % (Programmbreite,
Programmhoehe,
ProgrammX_Position,
ProgrammY_Position))
Programmname = 'Notationsprogramm'
root.maxsize(Programmbreite, Programmhoehe)
root.title(Programmname)
x= tk.Frame(width=800,height=800,relief=tk.RAISED,background="yellow")
w=xD(x)
x.pack()
class xD(tk.Canvas):
def __init__(self,master):
xpos=0
ypos=0
width=600
height=600
tk.Canvas.__init__(self,master,
border = 4,
relief = 'ridge',
background = 'White'
)
self.place(x=xpos,y=ypos,width=width,height=height)
self.bind("<a>", self.key)
self.bind("<Button-1>", self.callback)
def key(self,event):
self.focus_set()
print "pressed"
def callback(self,event):
self.focus_set()
print "clicked at", event.x, event.y
root = tk.Tk()
x = hauptprogramm(root)
root.mainloop()
Code: Alles auswählen
import Tkinter as tk
class hauptprogramm():
def __init__(self,root):
#bestimmung von root
self.root = root
Programmbreite = 1000
Programmhoehe = 700
ProgrammX_Position = 100
ProgrammY_Position = 100
root.geometry('%dx%d+%d+%d' % (Programmbreite,
Programmhoehe,
ProgrammX_Position,
ProgrammY_Position))
Programmname = 'Notationsprogramm'
root.maxsize(Programmbreite, Programmhoehe)
root.title(Programmname)
x= tk.Frame(width=800,height=800,relief=tk.RAISED,background="yellow")
w=xD(x)
# Optionen fuer die Radiobutton der vorzeichenauswahl
radio_opt_V = options = {}
# statt den Kreisen mit dem Punkt zum auswaehlen der abgesenkte Button
options['indicatoron'] = False
options['width'] = 73
options['selectcolor'] = 'pink'
self.vvv = tk.IntVar()
self.b_vorzeichen = tk.Radiobutton(x,text="Hallo",variable = self.vvv, value = 1, **radio_opt_V)
self.b_vorzeichen.pack(anchor = tk.W)
self.kein_vorzeichen = tk.Radiobutton(x,text="Halloelei",variable = self.vvv, value = 2, **radio_opt_V)
self.kein_vorzeichen.pack(anchor = tk.W)
self.kreuz_vorzeichen = tk.Radiobutton(x,text="Hallleee",variable = self.vvv, value = 3, **radio_opt_V)
self.kreuz_vorzeichen.pack(anchor = tk.W)
x.pack()
class xD(tk.Canvas):
def __init__(self,master):
xpos=0
ypos=0
width=600
height=600
tk.Canvas.__init__(self,master,
border = 4,
relief = 'ridge',
background = 'White'
)
self.place(x=xpos,y=ypos,width=width,height=height)
self.bind("<a>", self.key)
self.bind("<Button-1>", self.callback)
def key(self,event):
self.focus_set()
print "pressed"
def callback(self,event):
self.focus_set()
print "clicked at", event.x, event.y
root = tk.Tk()
x = hauptprogramm(root)
root.mainloop()
@questlove: Naja, wenn Du *keine* Radiobuttons im Programm hast, dann können die natürlich auch nicht nebeneinander angezeigt werden. Wie man Widgets nebeneinander packt steht zum Beispiel hier: The Tkinter Pack Geometry Manager.
Hi questlove
Hier etwas Code zum herumspielen:
Da ich Teile von deinem Script übernommen habe etspricht er nicht der PEP-8 Norm. Aber nehme dir doch einmal Zeit PEP-8 (Leitfaden für Pythonprogrammierer) näher anzusehen (lesen).
Gruß wuf
Hier etwas Code zum herumspielen:
Code: Alles auswählen
import Tkinter as tk
class HauptProgramm():
def __init__(self, root):
#bestimmung von root
self.root = root
Programmbreite = 1000
Programmhoehe = 700
ProgrammX_Position = 100
ProgrammY_Position = 100
root.geometry('%dx%d+%d+%d' % (Programmbreite, Programmhoehe,
ProgrammX_Position, ProgrammY_Position))
PROGRAMM_NAME = 'Notationsprogramm'
root.maxsize(Programmbreite, Programmhoehe)
root.title(PROGRAMM_NAME)
vertical_frame = tk.Frame(relief=tk.RAISED, bg="yellow")
vertical_frame.pack(side='left', anchor=tk.NW)
horizontal_frame = tk.Frame(relief=tk.RAISED)
horizontal_frame.pack(side='right', anchor='ne')
w = xD(vertical_frame)
# Optionen fuer die Radiobutton der vorzeichenauswahl
vert_options = {}
# statt den Kreisen mit dem Punkt zum auswaehlen der abgesenkte Button
vert_options['indicatoron'] = False
vert_options['width'] = 25
vert_options['selectcolor'] = 'pink'
self.vvv = tk.IntVar()
self.b_vorzeichen = tk.Radiobutton(vertical_frame, text="Hallo",
variable=self.vvv, value=1, **vert_options)
self.b_vorzeichen.pack()
self.kein_vorzeichen = tk.Radiobutton(vertical_frame, text="Halloelei",
variable=self.vvv, value = 2, **vert_options)
self.kein_vorzeichen.pack()
self.kreuz_vorzeichen = tk.Radiobutton(vertical_frame, text="Hallleee",
variable=self.vvv, value=3, **vert_options)
self.kreuz_vorzeichen.pack()
horiz_options = {}
# statt den Kreisen mit dem Punkt zum auswaehlen der abgesenkte Button
horiz_options['indicatoron'] = False
horiz_options['width'] = 25
horiz_options['selectcolor'] = 'darkolivegreen1'
self.horiz_opt_var = tk.IntVar()
self.radio_but_1 = tk.Radiobutton(horizontal_frame, text='Option-1',
variable=self.horiz_opt_var, value = 1, **horiz_options)
self.radio_but_1.pack(side='left')
self.radio_but_2 = tk.Radiobutton(horizontal_frame, text='Option-2',
variable=self.horiz_opt_var, value = 2, **horiz_options)
self.radio_but_2.pack(side='left')
self.radio_but_3 = tk.Radiobutton(horizontal_frame, text='Option-3',
variable=self.horiz_opt_var, value = 3, **horiz_options)
self.radio_but_3.pack(side='left')
class xD(tk.Canvas):
def __init__(self,master):
xpos=0
ypos=0
width=600
height=600
tk.Canvas.__init__(self,master,
border = 4,
relief = 'ridge',
background = 'White'
)
self.place(x=xpos,y=ypos,width=width,height=height)
self.bind("<a>", self.key)
self.bind("<Button-1>", self.callback)
def key(self,event):
self.focus_set()
print "pressed"
def callback(self,event):
self.focus_set()
print "clicked at", event.x, event.y
root = tk.Tk()
x = HauptProgramm(root)
root.mainloop()
Gruß wuf

Take it easy Mates!