Python 3 – die besten Beiträge

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

Computer, Programmiersprache, Python, Zeit, Python 3

**kwargs in __init__() Methode und "self" in Python?

Hey Leute,

ich habe heute begonnen, Kivy zu lernen. Kivy ist ein Python Framework, für plattformübergreifende Apps. Ich bin allerdings noch ein Anfänger in Python und da man für Kivy OOP beherrschen muss. Habe ich mir eben ein paar Tutorials angeschaut und das Konzept von Klassen auch verstanden und schon etwas geübt. Auch das "self" eine Referenz auf die aktuelle Instanz ist habe ich kapiert. Aber wieso kann man aus einer Methode auf die Instanzvariablen nur zugreifen, wenn vor diesen "self" steht?

Und meine zweite Frage ist, wozu bei der Initialisierung der __init__() Methode manchmal noch so ein **kwargs steht. Also hier mal ein Beispielcode:

class MyGrid(GridLayout):

  def __init__(self, **kwargs):

    super().__init__(**kwargs)

    self.word_list = ["python", "java", "ruby", "javascript"]

    self.guess_word = []

    self.secret_word = ""

    self.remaining_guesses = 6

    self.img_path = "img/hangman_{}.png"

    self.create_game_layout()

    self.new_game()

Das ist jetzt mal nur die __init__() Methode einer MyGrid Klasse die von GridLayout erbt.

Ach ja. Was dieses "super()" bedeutet habe ich auch nicht so ganz verstanden.

Ich wäre sehr sehr dankbar wenn mir jemand helfen könnte. Denn ich will für eine Projektarbeit im Informatikunterricht umbedingt eine Android Kivy App für Hangman programmieren. Aber dafür muss ich diese Themen erst einmal verstehen.

LG Code Snake

Programmiersprache, Python, Instanz, Python 3, Objektorientierte Programmierung, App Programmieren

Durschnittszeiten mit arrays in python berechnen?

Ich programmiere aktuell einen 1x1 Trainer um Programmieren zu üben/ lernen. Aktuell wird nach eingeben der Aufgabe, die Aufgabe überprüft und Richtig oder Falsch angezeigt. Darunter die benötigte Zeit für die Aufgabe.
Jetzt will ich aber statt der benötigten Zeit pro Aufgabe die Durchschnittszeit pro Aufgabe angezeigt bekommen (Am besten mit Speichern von Daten in Arrays).

Kann mir da jemand helfen?

Hier der aktuelle Code:

from random import randint

import tkinter as tk

import time

status = False

def buttonLos_clicked(event):

    global status

   

    if status == False:

        status = True

        nextTask()

def nextTask():

    global a, b, produkt, zeitanfang

    textbox.delete(0,tk.END)

    zeitanfang = time.time()

   

    a = randint(1,10)

    b = randint(1,10)

    produkt = a * b

    showTask()

def showTask():

    global a, b

   

    labelTask["text"]="Wie viel ist " + str(a) + " x " + str(b) + "?"

def checkAufgabe(event):

    global produkt, zeitanfang, zeitende

   

    antwort = int(textbox.get())

    if antwort == produkt:

        zeitende = time.time()

        labelAnswer["text"] = "Richtig"

        labelTime["text"] = round(zeitende - zeitanfang, 2)

        nextTask()

   

    else:

        labelAnswer["text"] = "Leider falsch. Probiere es nochmal"

        textbox.delete(0,tk.END)

        showTask()

root = tk.Tk()

root.title("1x1-Trainer")

labelBody1 = tk.Label(root, text="Es werden dir zufällige Aufgaben gestellt.")

buttonLos = tk.Button(root, text="Los")

labelTask = tk.Label(root)

textbox = tk.Entry(root)

labelAnswer = tk.Label(root)

labelTime = tk.Label(root)

labelBody1.pack()

buttonLos.pack()

labelTask.pack()

textbox.pack()

labelAnswer.pack()

labelTime.pack()

buttonLos.bind("<Button-1>", buttonLos_clicked)

textbox.bind("<Return>", checkAufgabe)

root.mainloop()

programmieren, Array, Programmiersprache, Python, time, benutzeroberflaeche, Python 3, Tkinter

Meistgelesene Beiträge zum Thema Python 3