Zwei kurze Fragen

Fragen zu Tkinter.
questlove
User
Beiträge: 65
Registriert: Dienstag 15. Februar 2011, 16:11

Iwie gehts bei den radiobuttons aber nicht..
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()
mit:

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()
BlackJack

@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.
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

Hi questlove

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()
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 :wink:
Take it easy Mates!
Antworten