Witam, mam pytanie odnośnie klas. Ma w module zrobią klasę w TKi, w drugim mam kolejną. Każda z klas oddzielnie otwiera się w swoim oknie. Potrzebuję zrobić aby jedną klasę zaimportować do drugiej tak aby oba okna otwierały się w jednym ( w jednym oknie mam przyciski wyboru a w drugim jakiś wynik który się wyświetla po kliknięciu przycisku i cały mechanizm chciałbym mieć w jednym oknie). Z góry dziękuję za wszelkie wskazówki. Pozdrawiam :D
- Rejestracja:około 3 lata
- Ostatnio:ponad rok
- Postów:2310
Na przyszłość odróżnij sobie analizę statyczną (gdzie są klasy i w jakich pakietach / źródłach sie zawierają), a dynamiczną (które okno jakie wywołuje) itd ...
Nie dajesz kodu, ale jak rozumiem o co pytasz - to są niezależne sprawy.
Biorąc na klatę 2w1 jest trudniej, a nie łatwiej.
- Rejestracja:prawie 3 lata
- Ostatnio:8 miesięcy
- Postów:40
ZrobieDobrze napisał(a):
Na przyszłość odróżnij sobie analizę statyczną (gdzie są klasy i w jakich pakietach / źródłach sie zawierają), a dynamiczną (które okno jakie wywołuje) itd ...
Nie dajesz kodu, ale jak rozumiem o co pytasz - to są niezależne sprawy.Biorąc na klatę 2w1 jest trudniej, a nie łatwiej.
Wiem, masz rację. Nie daję kodu bo nie mogę - pracodawcy. Muszę jakoś to rozwiązać. Z narzędziem TKinter pracuję od wczoraj więc się muszę szybko nauczyć.
- Rejestracja:około 3 lata
- Ostatnio:ponad rok
- Postów:2310
progcet98 napisał(a):
- pracodawcy.
imieniny obchodzi 21 listopada ?
- Rejestracja:ponad 6 lat
- Ostatnio:około 2 miesiące
- Postów:242
Jak klasa dziedziczy po tkinter.Frame
to można jej instancje traktować jak widget i dodawać do okna tak jak inne buttony, etc., takie proste demo:
import tkinter as tk
import random
class MyFrame(tk.Frame):
def __init__(self, parent, color) -> None:
#tk.Frame.__init__(self, master=parent, bg=color)
super().__init__(master=parent, bg=color)
self.strvar = tk.StringVar()
self.entry = tk.Entry(self, textvariable=self.strvar)
self.entry.pack(expand=True)
self.button = tk.Button(self, text="apply", padx=5)
self.button["command"] = self.click
self.button.pack(expand=True, pady=10)
self.label = tk.Label(self, textvariable=self.strvar, bg=color)
self.label.pack(expand=True)
self.label_from_button = tk.Label(self, text="hello", bg=color)
self.label_from_button.pack(expand=True)
def click(self) -> None:
self.label_from_button["text"] = self.entry.get()
def main() -> None:
root = tk.Tk()
ROWS = 2
COLUMNS = 3
font = ("Arial", 15)
bt = tk.Button(root, text="Quit", command=root.destroy, font=font)
bt.grid(row=0, column=0, columnspan=COLUMNS, pady=10)
cfg = {"padx": 10, "pady": 10}
for row in range(1, ROWS + 1):
for col in range(COLUMNS):
frame = MyFrame(root, f"#{random.randint(0, 0xFFFFFF):06x}")
frame.configure(**cfg)
frame.grid(row=row, column=col, sticky="nswe")
root.mainloop()
if __name__ == "__main__":
main()
- Rejestracja:prawie 3 lata
- Ostatnio:8 miesięcy
- Postów:40
jvoytech napisał(a):
Jak klasa dziedziczy po
tkinter.Frame
to można jej instancje traktować jak widget i dodawać do okna tak jak inne buttony, etc., takie proste demo:import tkinter as tk import random class MyFrame(tk.Frame): def __init__(self, parent, color) -> None: #tk.Frame.__init__(self, master=parent, bg=color) super().__init__(master=parent, bg=color) self.strvar = tk.StringVar() self.entry = tk.Entry(self, textvariable=self.strvar) self.entry.pack(expand=True) self.button = tk.Button(self, text="apply", padx=5) self.button["command"] = self.click self.button.pack(expand=True, pady=10) self.label = tk.Label(self, textvariable=self.strvar, bg=color) self.label.pack(expand=True) self.label_from_button = tk.Label(self, text="hello", bg=color) self.label_from_button.pack(expand=True) def click(self) -> None: self.label_from_button["text"] = self.entry.get() def main() -> None: root = tk.Tk() ROWS = 2 COLUMNS = 3 font = ("Arial", 15) bt = tk.Button(root, text="Quit", command=root.destroy, font=font) bt.grid(row=0, column=0, columnspan=COLUMNS, pady=10) cfg = {"padx": 10, "pady": 10} for row in range(1, ROWS + 1): for col in range(COLUMNS): frame = MyFrame(root, f"#{random.randint(0, 0xFFFFFF):06x}") frame.configure(**cfg) frame.grid(row=row, column=col, sticky="nswe") root.mainloop() if __name__ == "__main__": main()
Dziękuję :D