Advertisement
adwas33

Untitled

Mar 12th, 2023
33
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.53 KB | None | 0 0
  1. import tkinter as tk
  2. from tkinter import simpledialog
  3.  
  4. def get_number():
  5. try:
  6. number = int(simpledialog.askstring("Liczba aktywności", "Podaj liczbę aktywności:"))
  7. activities = []
  8. for i in range(number):
  9. activity = get_activity(i + 1)
  10. if activity is None:
  11. # An error occurred or user clicked "Cancel", abort
  12. return
  13. activities.append(activity)
  14. # wszystkie aktywności zostały wczytane, można teraz wykonać obliczenia CPM
  15. # można tutaj dodać kod do obliczenia CPM
  16. label.config(text="Wprowadzono wszystkie dane!")
  17. button.config(text="Zakończ", command=root.quit)
  18. return activities
  19. except ValueError:
  20. # jeśli wprowadzono napis zamiast liczby, wykonaj coś takiego:
  21. label.config(text="Błąd! Wprowadź liczbę całkowitą.")
  22. return
  23.  
  24.  
  25. def get_activity(activity_number):
  26. activity_name = simpledialog.askstring("Nazwa aktywności", f"Podaj nazwę aktywności {activity_number}:")
  27. if activity_name is None:
  28. return None
  29. try:
  30. activity_duration = int(simpledialog.askstring("Czas trwania", f"Podaj czas trwania aktywności {activity_number}:"))
  31. activity_predecessors = simpledialog.askstring("Poprzednicy", f"Podaj poprzedników aktywności {activity_number} (oddzielone spacjami):").split()
  32. activity = {"name": activity_name, "duration": activity_duration, "predecessors": activity_predecessors}
  33. return activity
  34. except ValueError:
  35. # jeśli wprowadzono napis zamiast liczby, wykonaj coś takiego:
  36. label.config(text=f"Błąd! Wprowadź liczbę całkowitą dla czasu trwania aktywności {activity_number}.")
  37. return None
  38.  
  39.  
  40. # stwórz okno główne
  41. root = tk.Tk()
  42. root.title("Wprowadzanie danych dla CPM")
  43.  
  44.  
  45. # stwórz etykietę z tekstem zachęcającym użytkownika do wprowadzenia liczby
  46. label = tk.Label(root, text="Witaj w naszym programie! Jest to prosty program na bazie którego obliczysz CPM (critical path method). Początkowo wprowadzisz odpowiednie dane (liczbę aktywności,nazwę aktywności,czas trwania oraz ich poprzedników) Potem obliczona zostanie CPM i zwizializowana na ekranie")
  47. label.pack()
  48.  
  49. # stwórz pole tekstowe do wprowadzania liczby
  50. # entry = tk.Entry(root)
  51. # entry.pack()
  52.  
  53. # stwórz przycisk do potwierdzenia wprowadzonej liczby i wczytania danych dla CPM
  54. button = tk.Button(root, text="OK", command=get_number)
  55. button.pack()
  56.  
  57. # wyświetl okno główne
  58. root.mainloop()
  59.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement