Tkinter - Schriftart

Fragen zu Tkinter.
Antworten
Benutzeravatar
jtschoch
User
Beiträge: 400
Registriert: Freitag 6. Mai 2011, 15:40
Kontaktdaten:

Hi,

Ich möchte bei meinen E-Mail Programm die Schriftart einstellen, aber
ich bekomme folgende Fehlermeldung:

Code: Alles auswählen

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Python32\lib\tkinter\__init__.py", line 1399, in __call__
    return self.func(*args)
  File "C:\Python32\lib\tkinter\__init__.py", line 3122, in __call__
    self.__callback(self.__value, *args)
TypeError: set_art() takes no arguments (1 given)

Das ist der Ausschnitt aus meinen Programm:

Code: Alles auswählen

#################---Schriftart---#############################
grtext = ["Arial", "Arial Black", "Comic Sans MS", "Courier New", "DejaVu Sans", "DejaVu Sans Condensed", "DejaVu Sans Light", "DejaVu Sans Mono","DejaVu Serif","DejaVu Serif Condensed","Estrangelo Edessa","Franklin Gothic Medium","Gautami"]
var = tkinter.StringVar()
def set_art():
    var.get()
    
op = tkinter.OptionMenu(root, var, *grtext, command=set_art)
var.set("Arial")

op.place(relx=0.011, rely=0.303, relwidth=0.15, relheight=0.029)
#####################---Größe---###############################
gruosse = ["4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "13", "14", "15", "16", "17", "18", "19", "20"]
varZahl = tkinter.StringVar()
op = tkinter.OptionMenu(root, varZahl, *gruosse)
varZahl.set("11")
#etext.config(font =('Arial', 11))
op.place(relx=0.161, rely=0.303, relwidth=0.05, relheight=0.029)
######################---Textfarbe---###########################
textfarbe = tkinter.Label(root, text = "   Textfarbe             ", fg = "black",  #Fabe: #E3EDFC"
                      font =('Arial', 11))
textfarbe.place(relx=0.211, rely=0.303)
auswahl=Button(text='',command = setTxTColor,font =('Arial', 10, 'bold'))
auswahl.config(bg="black")
auswahl.place(relx=0.298, rely=0.303,relwidth=0.06, relheight=0.03)
##############################################################################
scrollbar = Scrollbar(root)
scrollbar.pack( side = RIGHT, fill=Y )

etext = Text(root,yscrollcommand=scrollbar.set)
scrollbar.config(command=etext.yview)
etext1 = etext
etext2 = etext
#etext.config(font =('Arial', 114))
Schriftart = set_art()
Schriftgr = 11
etext.config(font =(Schriftart, Schriftgr))
etext2.config(fg="black")
etext1.config()
etext.insert(INSERT, "")

scrollbar.place(relx=0.9602, rely=0.3308, relheight=0.55)
etext.place(relx=0.01, rely=0.33, relwidth=0.95, relheight=0.55)

################################
##################################################
Meine Webseite http://www.develos.de
Forum: http://www.develos.de/forum
Mein Minecraft-Server: jonel.minecraft.to [dynmap(:8123)] | Webseite: http://jonel-minecraft.tk
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Lies die Fehlermeldung: set_art() wird mit einem Argument aufgerufen, kann es aber nicht verarbeiten, weil keins erwartet wird. Die als Eventhandler verwendete Funktion braucht einen Parameter; dieser enthält die aktuelle Auswahl.
Anders als bei einem Button erwartet command beim OptionMenu keine parameterlose Funktion.
Benutzeravatar
jtschoch
User
Beiträge: 400
Registriert: Freitag 6. Mai 2011, 15:40
Kontaktdaten:

Kann mir bitte da einer Helfen ich bekomme das nicht hin

Ich möchte bei meinen E-Mailprogramm die Schriftart und Schriftgröße einstellen.
Beides soll unabhängig voneinander geschehen nicht miteinander.
Also ich brauche dazu ein update befehl wie config(...) , aber so geht es nicht.

In meinen Ausschnitt habe ich es so:

Code: Alles auswählen

Schriftart = set_art() #Fehler 
Schriftgr = 11
etext.config(font =(Schriftart, Schriftgr))
Ich muss irgendwie Schriftart&Schriftgr neu updaten

wie ich es oben habe:

Code: Alles auswählen

def set_art():
    var.get()
gibt es eine Möglichkeit das so zu machen?:

Code: Alles auswählen

def set_art():
    Schriftart = var.get()
    # Hier muss es irgendwie Übergeben werden
Bei Schriftgröße ist es das selbe
Meine Webseite http://www.develos.de
Forum: http://www.develos.de/forum
Mein Minecraft-Server: jonel.minecraft.to [dynmap(:8123)] | Webseite: http://jonel-minecraft.tk
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Code: Alles auswählen

import Tkinter as tk
btn = tk.Button(text="Klick mich!", font=("Arial",10), command=
      lambda :btn.config(font=("Arial",int(btn.cget("font").split().pop())+2)))
btn.pack()
btn.mainloop()
Benutzeravatar
jtschoch
User
Beiträge: 400
Registriert: Freitag 6. Mai 2011, 15:40
Kontaktdaten:

Danke!


Aber ich habe es jetzt so gemacht, aber
ich bekomme immernoch eine Fehlermeldung:

Code: Alles auswählen

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Python32\lib\tkinter\__init__.py", line 1399, in __call__
    return self.func(*args)
  File "C:\Python32\lib\tkinter\__init__.py", line 3122, in __call__
    self.__callback(self.__value, *args)
TypeError: <lambda>() takes no arguments (1 given

Code: Alles auswählen

#################---Schriftart---#############################
grtext = ["Arial", "Arial Black", "Comic Sans MS", "Courier New", "DejaVu Sans", "DejaVu Sans Condensed", "DejaVu Sans Light", "DejaVu Sans Mono","DejaVu Serif","DejaVu Serif Condensed","Estrangelo Edessa","Franklin Gothic Medium","Gautami"]
var = tkinter.StringVar()
var.set("Arial")
op = tkinter.OptionMenu(root, var, *grtext, command=
      lambda :etext.config(font=(var.get(),11)))
op.place(relx=0.011, rely=0.303, relwidth=0.15, relheight=0.029)
#####################---Größe---###############################
gruosse = ["4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "13", "14", "15", "16", "17", "18", "19", "20"]
varZahl = tkinter.StringVar()
op = tkinter.OptionMenu(root, varZahl, *gruosse)
varZahl.set("11")
#etext.config(font =('Arial', 11))
op.place(relx=0.161, rely=0.303, relwidth=0.05, relheight=0.029)
######################---Textfarbe---###########################
textfarbe = tkinter.Label(root, text = "   Textfarbe             ", fg = "black",  #Fabe: #E3EDFC"
                      font =('Arial', 11))
textfarbe.place(relx=0.211, rely=0.303)
auswahl=Button(text='',command = setTxTColor,font =('Arial', 10, 'bold'))
auswahl.config(bg="black")
auswahl.place(relx=0.298, rely=0.303,relwidth=0.06, relheight=0.03)
##############################################################################
scrollbar = Scrollbar(root)
scrollbar.pack( side = RIGHT, fill=Y )

etext = Text(root,yscrollcommand=scrollbar.set)
scrollbar.config(command=etext.yview)
etext1 = etext
etext2 = etext
#etext.config(font =('Arial', 114))
Schriftgr = 112
etext.config(font =("Arial", Schriftgr))
etext2.config(fg="black")
etext1.config()
etext.insert(INSERT, "")

scrollbar.place(relx=0.9602, rely=0.3308, relheight=0.55)
etext.place(relx=0.01, rely=0.33, relwidth=0.95, relheight=0.55)

##################################################################################

Wie kann ich das ändern?
Meine Webseite http://www.develos.de
Forum: http://www.develos.de/forum
Mein Minecraft-Server: jonel.minecraft.to [dynmap(:8123)] | Webseite: http://jonel-minecraft.tk
Benutzeravatar
jtschoch
User
Beiträge: 400
Registriert: Freitag 6. Mai 2011, 15:40
Kontaktdaten:

Wisst ihr auch nix?
Meine Webseite http://www.develos.de
Forum: http://www.develos.de/forum
Mein Minecraft-Server: jonel.minecraft.to [dynmap(:8123)] | Webseite: http://jonel-minecraft.tk
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Vielleicht solltes du einfach mal die Fehlermeldung lesen.
Das Leben ist wie ein Tennisball.
Benutzeravatar
jtschoch
User
Beiträge: 400
Registriert: Freitag 6. Mai 2011, 15:40
Kontaktdaten:

Ich weiß aber ich bekomme es auch da nicht hin
Meine Webseite http://www.develos.de
Forum: http://www.develos.de/forum
Mein Minecraft-Server: jonel.minecraft.to [dynmap(:8123)] | Webseite: http://jonel-minecraft.tk
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Dann übersetze halt die Fehlermeldung.
Das Leben ist wie ein Tennisball.
Benutzeravatar
jtschoch
User
Beiträge: 400
Registriert: Freitag 6. Mai 2011, 15:40
Kontaktdaten:

Code: Alles auswählen

Exception in Tkinter Rückruf
Traceback (most recent call last):
   File "C: \ Python32 \ lib \ Tkinter \ __init__.py", line 1399, in __call__
     Rückkehr self.func (* args)
   File "C: \ Python32 \ lib \ Tkinter \ __init__.py", line 3122, in __call__
     self.__callback (self.__value, * args)
TypeError: <lambda> () keine Argumente (1 gegeben
Ich weiß dass auch ohne übersetzen aber ich weiß nicht was ich an meinen Code ändern soll
Meine Webseite http://www.develos.de
Forum: http://www.develos.de/forum
Mein Minecraft-Server: jonel.minecraft.to [dynmap(:8123)] | Webseite: http://jonel-minecraft.tk
Antworten