Code – die besten Beiträge

Python GUI Tkinter Buttons blinken bei laufender Akutalisierung?

Hallo,

ich möchte mit Phyton und der Bibliothek Tkinter eine GUI für ein Kartenspiel programmieren.

Für das Kartenspiel müssen ständig neue Karten geladen werden.

Das heißt, es wird zum Beispiel andauernd überprüft wie viele Karten die Spieler in der Auslage und in der Hand haben und dementsprechend werden dann Labels und Buttons generiert.

Die Idee ist, einfach laufend die GUI in gewissen Abständen (zum Beispiel einige Dutzend Millisekunden) zu aktualisieren.

Wenn ich das mache blinken die Labels und Buttons aber immer auf.

Nach Recherche soll das daran liegen, dass sie immer wieder in zu kurzen Abständen neu erstellt werden.

Man könnte die GUI natürlich immer nur dann neu erstellen lassen, wenn tatsächlich im Spiel etwas passiert.

Das passiert aber andauernd, weswegen es besser ist, einfach laufend die GUI zu aktualisieren.

Gibt es dafür noch eine andere Methode (Zum Beispiel PyGame anwenden)?

Hier ein Minimalbeispiel:

class DynamicInterfaceApp:
  def __init__(self):
    self.root = Tk()
    self.root.geometry("1000x500")
    self.update_interface_periodically()
  
  def update_interface(self):
    self.my_frame= Frame(self.root, bg="red")
    self.my_frame.place(x=0, y=0, relwidth=1, relheight=1) 
    self.my_button = Button(self.my_frame)
    self.my_button.place(x=0, y=0, width=50, height=50)
   
  def update_interface_periodically(self):
    self.update_interface()
    self.root.after(25, self.update_interface_periodically)

app = DynamicInterfaceApp()
app.root.mainloop()
App, Code, Programmiersprache, Python, Pygame, Tkinter

Python Aufgabe?

Schreiben Sie ein Programm und speichern Sie es als Caesar.py. Ihr Programm soll beim Aufruf drei Programmparameter erhalten: Zwei Dateinamen und eine Ganzzahl. Bei Ausf ¨uhrung soll das Programm den Inhalt der ersten Datei mithilfe der Caesar-Verschl ¨usselung und der Ganzzahl als Schl ¨ussel verschl ¨usseln und in die zweite Datei schreiben. Ihr Programm soll nur Kleinbuchstaben verschl¨usseln und alle anderen Zeichen unver¨andert lassen. Tipp: Legen Sie ein Array f ¨ur alle Zeichen, die verschl ¨usselt werden sollen (Kleinbuchstaben) an, und arbeiten Sie mit diesem Array. Bei der Caesar-Verschl ¨usselung (auch Verschiebechiffre) wird jeder Buchstabe des Klartextes auf einen Geheimtextbuchstaben abgebildet. Dazu werden die Zeichen des Alphabets um eine bestimmte Anzahl (den Schl ¨ussel) nach rechts verschoben. Geht man beim Verschieben ¨uber ’z’ hinaus, dann beginnt man wieder bei ’a’. Beispiel: Aus ’python’ w¨urde mit Schl¨ussel 2 somit ’ravjqp’.
Da habe ich jetzt:

import sys

def caesarencrypt(text, shift):
   encryptedtext = ""
   for char in text:
      if char.islower():
         encryptedtext += chr((ord(char) - ord('a') + shift) % 26 + ord('a'))
      else:
         encryptedtext += char
   return encrypted_text

def main():
   if len(sys.argv) != 4:
      print("Usage: python Caesar.py <inputfile> <outputfile> <shift>")
      sys.exit(1)
   input_filename = sys.argv[1]
   output_filename = sys.argv[2]
   shift = int(sys.argv[3])
   try:
      with open(input_filename, 'r') as file:
         text = file.read()
         encrypted_text = caesar_encrypt(text, shift)
      with open(output_filename, 'w') as file:
         file.write(encrypted_text)
         print(f"Verschlüsselter Text wurde in {output_filename} geschrieben.")
   except FileNotFoundError:
      print(f"Die Datei {input_filename} wurde nicht gefunden.")
      sys.exit(1)

if __name == "__main":
   main()

Ist das so richtig?

___

[Edit 2024-08-12: Quelltext formatiert und eingerückt]

Code, Programmiersprache, Python

Meistgelesene Beiträge zum Thema Code