Wie kann ich eine Python Methode in einen int() umwandeln?
Ich schreibe aktuell an einem Python Code, dass mir die Uhrzeit anzeigen soll:
from tkinter import *
from time import *
Fenster = Tk()
Fenster.geometry(str(Fenster.winfo_screenwidth())+"x"+str(Fenster.winfo_screenheight()))
Fenster.title("Funktionen")
def Aktuelle_Zeit():
Label(text = strftime("%H:%M:%S", localtime(time()))).place(x = int(Fenster.winfo_screenwidth)/4, y = int(Fenster.winfo_screenheight)/4)
Button(text = "Aktuelle Zeit", command = Aktuelle_Zeit).place(x = int(Fenster.winfo_screenwidth())/6*5, y = int(Fenster.winfo_screenheight()/20))
mainloop()
Jetzt kommt der Fehler:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.11_3.11.752.0_x64__qbz5n2kfra8p0\Lib\tkinter\__init__.py", line 1948, in __call__
return self.func(*args)
^^^^^^^^^^^^^^^^
File "e:\Programmieren\New.py", line 10, in Aktuelle_Zeit
Label(text = strftime("%H:%M:%S", localtime(time()))).place(x = int(Fenster.winfo_screenwidth)/4, y = int(Fenster.winfo_screenheight)/4)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: int() argument must be a string, a bytes-like object or a real number, not 'method'
Ich denke: Das heißt, dass ich eine Methode in einen integer umwandeln möchte, das aber nicht geht.
Das Label soll aber hinter einem Viertel des Bildschirms plaziert werden. Deswegen nehme ich die Bildschirm Größe und teile sie durch 4. Wie kann ich das Ganze sonst machen, ohne das ein Fehler kommt? Würde mich bei einer Antwort freuen.
Euer Alex
2 Antworten
x = int(Fenster.winfo_screenwidth)
versus
int(Fenster.winfo_screenwidth())/6*5
Ist winfo_screenwidth nun eine Methode oder ein Attribut - Nur eines von beidem wird stimmen. Kurze Googlesuche meint, es ist ne MEthode, bei der beanstandeten Zeile fehlen die Klammern.
Nachtrag, warum machste es Dir nicht einfacher:
def Aktuelle_Zeit():
width,height=int(Fenster.winfo_screenwidth()),int(Fenster.winfo_screenheight())
Und nutzt dann einfach width und height in den folgenden Zeilen?
Das hat irgendwie nicht funktioniert... Trotzdem danke.
Ich bin leider kein Python Profi - aber warum rufst du int sowieso so auf? Lass den Methodenaufruf doch weg und schreibe einfach die Rechnung dort rein?
Deswegen muss ich die Methode in einen Integer umwandeln, damit ich anschließend weiß, was ein Viertel des Bildschirms ist.
Dazu brauchst du aber nicht den Datentypen zu konvertieren. Das macht Python schon selbst.
Wie meinst du Dateitypen? Ich konvertiere doch die Ausgabe von der Funktion winfo_screenwidth()?
Aber es der Viertel des Bildschirms hängt ja von der Bildschirmgröße ab... Deswegen muss ich die Methode in einen Integer umwandeln, damit ich anschließend weiß, was ein Viertel des Bildschirms ist.