GUI w Pythonie to katorga.
Od 12 godzin męczę się, żeby zrobić nowoczesne, funkcjonalne GUI pod operacje na plikach CSV i obiecuję, że się nie da. Ogarnąłem nawet CustomTkintera, ale po tym jak przez 3h z pomocą #chatgpt i niezliczonych stron i pełnej dokumentacji nie mogłem stworzyć rozwijanego menu podpiętego pod label to się poddałem. W zwykłym Tkinterze zajęło to 5 minut, ale rezultat graficzny jest taki, że właśnie dzwonil windows xp
via Wykop Mobilny (Android)
  • 0
Mam projekt napisany w #tkinter #python coś koło 330 linii. Chciałbym w ramach treningu (nauka i refaktoryzacja obecnego kodu) przepisać to na jakieś sympatyczniejsze GUI. Czego użyć? Z tego co widziałem to mam na opcji guietta i pyqt5, obsłużą one comboboxy, zakładki, messagebox (chociaż tego chyba i tak mogę użyć z tkinter), entry, label I przyciski z funkcjami? #pytanie #programowanie
Mam program (tkinter) z trzema zakładkami, potrzebuje część widżetów z pierwszej zakładki przenieść do drugiej i trzeciej. Jak to zrobić? wrzucenie widżetu w funkcje wyrzuca:

maximum recursion depth exceeded while calling a Python object


#python #tkinter
via Wykop Mobilny (Android)
  • 0
Radiobutton nr 1 pokazuje jedno pole do wpisywania.

Radio button nr 2 pokazuje dwa pola do wpisywania.

Radio button nr 3 pokazuje trzy pola do wpisywania.

Pytanie - co zrobić ze po wciśnięciu Radio button nr 3 a następnie radio button nr 1 zostalo tylko jedno pole, a nie trzy?

Pastebin

Byłbym też wdzięczny za sprawdzenie czy w kodzie nie ma czegoś co można uprościć. Dzięki!

#python #tkinter #naukaprogramowania
@TheBloody: niby tklnter a wyglada 2x lepiej niz microsoftowe guwna z UWP

gratuluje ukonczenia projektu. wbrew pozorom to bardzo rzadkie zjawisko doprowadzenia do końca nawet małych programików. większość kończy rozgrzebana bo jest jakiś nowy pomysł zawsze

Także programuj dalej mirku i super ( ͡° ͜ʖ ͡°)
  • Odpowiedz
Znacie może jakiś open source programik w pythonie zbudowany na tkinterze? Chciałbym się przyjrzeć jak w praktyce powinny wyglądać większe aplikacje, żeby mieć się na czym wzorować, bo niestety wszystkie tutoriale pokazują tylko jakiś bieda kod z zastosowaniem konkretnego widgetu.
#tkinter #python #programowanie
@luukasek: Udało mi się znaleźć coś takiego: https://github.com/Dvlv/Tkinter-By-Example
Wydaje się być calkiem spoko, bo najpierw uczy działania podstawowych widgetów z tkintera, a potem pokazuje jak to zrobić obiektowo. No i do wszystkich ćwiczeń dodany jest też kod źródłowy.

Z ciekawych rzeczy to znalazłem też taki program YEDDA, który jest napisany na tkinterze i zdobył jakąś nagrodę w 2018. Ciekawe jest to, że program wydaje się nie być napisany obiektowo. No
  • Odpowiedz
Cześć, chciałbym prosić o pomoc w zrozumieniu działania funkcji. Mam taki oto kod, który ma póki co za zadanie wyświetlać jakiś obrazek png oraz współrzędne kursora. Do interfejsu wykorzystuję tkinter, dlatego chciałem sobie utworzyć pasek narzędzi w oknie, żeby to było schludne.
Niestety nie rozumiem w jaki sposób mogę przechwycić returna z mojej funkcji "chooseFile", jeśli wykorzystuję daną funkcję w pasku narzędzi w argumencie "command".
W jaki sposób powinno to być
Hej mirasy, mam takie zadanka do zrobienie w tkinter i pojawia mi się jeden problem jak mantra. Co zrobić, żeby widgety(np. button) nie wychodziły mi z okienka(root = tk.Tk())
Mam ruchome buttony. Jeden taki, którym się poruszam kursorem i wychodzi mi on za krawędź okienka a nie może! :x
#tkinter #python
Jak w Pythonie sprawić, żeby po wciśnięciu danego przycisku wyświetlił się tekst, który jest do niego przypisany. Powiedzmy, że wygląda to następująco:

okno = Tk()

topFrame = Frame(okno)
topFrame.pack()
bottomFrame = Frame(okno)
bottomFrame.pack(side = BOTTOM)

def witaj():
print("WITAJ")


przycisk1 = Button(topFrame, text="WITAJ", fg = "red", command=witaj)

Przy takiej kombinacji tekst wyświetla się w konsoli, a chciałbym żeby wyświetlił się w oknie np. pod przyciskiem.

#python #tkinter
Nigdy nie bawilem sie w robienie GUI oraz programowanie obiektowe. Teraz zostalem rzucony na goraca wode i nie rozumiem nawet podstaw. Dlaczego to nie dziala? Chcialbym aby okienko About pojawialo sie po kliknieciu elementu About w Help menu, niestety pojawia sie od razu po uruchomieniu programu, nawet zanim glowne okienko sie pojawi.

import Tkinter as tk
import tkMessageBox

class FileMenu(tk.Menu):
def __init__ (self, parent):
tk.Menu.__init__(self, parent, tearoff=False)
self.add_command(label='Exit', command=self.quit)

class HelpMenu(tk.Menu):
def
Słaba pora i dzień na porady programowania, ale spróbuję.
Bawię się trochę #tkinter i natrafiłem na problem. Nie wiem jak zrobić, żeby odświeżał się tekst na labelce, który zmienia sie w wywoływanej funkcji. Najlepiej na przykładzie:
https://pastebin.com/DvQxw9n4
Chciałbym żeby po kliknieciu, najpierw na labelce pojawił się napis informujacy o kliknięciu, a dopiero potem wynik. Teraz to wyglada tak, że tekst, który informuje o kliknięciu jest pomijany na GUI, bo (jak rozumiem) odświeżenie
Cześć!

Kolejny zestaw pytań o #tkinter w #python . Chcę powiązać wciśnięcie klawisza na klawiaturze z akcją danego przycisku (Button widget).

Dla części mi prawie działa tak jak chcę, a dla części nie. Już tłumaczę o co chodzi. Najpierw kod: https://pastebin.com/5vfSCNEd

Dla przycisku usuwania ostatniej cyfry wszystko działa. Mam funkcję z event=None, w _init odpowiedni .bind (master.bind('', self.clearlast)) i działa. Jednak w przypadku, gdy chcę połączyć enter numerycznej z działaniem
jednak zrobić to dla każdego przycisku to będzie masa kodu


@Devih: Może czas pomyśleć o własnym widgecie, dziedziczącym z Buttona, jeżeli to jest dodanie jednej-dwóch rzeczy to raczej prosto się robi. Wpierw możesz jednak napisać tą funkcję do zmiany wyglądu (animacji nie ma chyba żaden znany mi system okienkowy) i podawać button jako parametr.
  • Odpowiedz
@Devih: Lambdę robisz tam po to, żeby ona się kiedyś wywołała, a wewnątrz change możesz spokojnie to (dopisanie jedynki) wywołać.
Poza tym, jak wczoraj szukałem błędu z kolumnami, to zrobiłem sobie :

def insert_value(self, value):
____self.write_area.insert(END, value)

i to później popodpinałem wszędzie (dzięki temu mieści się to w 78 kolumnach).
  • Odpowiedz
Cześć!

Natrafiłem na kolejną zagwozdkę przy robieniu kalkulatora w #python #tkinter . Praktycznie cała wizualna strona gotowa, jednak mam problem zaimplementować Scrollbar do widgetu Text. Korzystam z tego poradnika, ale wyskakuje błąd:

Traceback (most recent call last):
File "C:/Users/x/PycharmProjects/gui_calculator/calc.py", line 80, in
a = Calculator(root)
File "C:/Users/x/PycharmProjects/gui_calculator/calc.py", line 11, in __init__
self.scrollbarY = Scrollbar(master, orient=VERTICAL, command=self.score_area.yview).grid(
AttributeError: 'Calculator' object has no attribute 'score_area'

Całość kodu wygląda tak: https://pastebin.com/PyD6Yy5p

Gdzie jest błąd?
@misza_zg: Dobra znowu doszedłem co nie tak.
Miałem:

self.scrollbarY = Scrollbar(master, orient=VERTICAL, command=self.score_area_yview).grid(rowspan=5, column=8, sticky=N+S)
oraz

self.score_area['yscrollcommand'] = self.scrollbarY.set
więc .set się po .grid robiło i stąd błąd.

zmieniłem

self.scrollbarY = Scrollbar(master, orient=VERTICAL, command=self.score_area_yview).grid(rowspan=5, column=8, sticky=N+S)
na

self.scrollbarY = Scrollbar(master, orient=VERTICAL, command=self.score_area_yview)
self.scrollbarY.grid(rowspan=5, column=8, sticky=N+S)

i już spoko. Jednak nie mogę sobie jeszcze z rozmieszczeniem poradzić, bo coś takiego mi się pojawia - jakbym nie manewrował kolumnami - ktoś ma jakiś
Devih - @miszazg: Dobra znowu doszedłem co nie tak.
Miałem:
self.scrollbarY = Scrol...

źródło: comment_Pz6Hi1XlM9T2a5T5jPxC97p2NSAAGId6.jpg

Pobierz
  • Odpowiedz
Postanowiłem zrobić kalkulator w GUI i wybór padł na tkinter. Pod względem graficznym mam wszystko zrobione, więc przyszedł czas na tworzenie funkcji. Chcę zrobić tak, żeby kalkulator działał następująco:
1) czyści cokolwiek jest w Entry - puste pole zostawia
2) wpisuję cyfrę z klawiatury albo z przycisku programu i pojawia się ona w Entry (to działa)
3) operacja - np. wciskam przycisk + (lub opcjonalnie + na klawiaturze) i wtedy:
- pobiera
@oskar_15: entry1 jest zdefiniowane wewnątrz metody initUI, w związku z czym metoda szukaj "nie widzi" tej zmiennej.

Możesz zmienić wszystkie odwołania do entry1, na self.entry1, dzięki czemu będzie wewnątrz "scope" obiektu klasy Example, dzięki czemu będzie widoczna dla wszystkich metod.

  • Odpowiedz
Cześć Mirki, polecacie może jakiś konkretny pakiet GUI i moduł graficzny do rysowania do Pythona? Może również jakąś książkę temu poświęconą lub ebooka? Póki co używam TkIntera, ale patrząc po rozsianej i często niekompletnej dokumentacji w necie, plus jakiejś jednej książce z 2004 roku, nie wiem, czy to dobry wybór i czy przy przypadkiem nie ma aktualnie lepszych, nowszych rozwiązań.
#programowanie #python #gui #tkinter