• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Dziwne zachowanie pola tekstowego (GUI)

VPS Starter Arubacloud
0 głosów
877 wizyt
pytanie zadane 5 września 2018 w Python przez El Lirón Obywatel (1,350 p.)

Witajcie! Założenia są takie, że po wybraniu opcji powinien się pojawić odpowiedni napis. Czy coś przeoczyłem? Dzięki z góry każdemu za pomoc. Wybaczcie, że pojawiam się na tym forum z banalnymi problemami, ale dopiero się uczę... Tak to wygląda - nie ma tekstu:



a oto kod:
 

from tkinter import *

class Board(Frame):
    def __init__(self, master):
        super(Board, self).__init__(master)
        self.create_wg()
        self.grid()

    def create_wg(self):
        self.lbl = Label(text = "Wybierz kolory, które najbardziej lubisz: ")
        self.lbl.grid(row = 0, column = 0)

        self.result = Text(self, width = 20, height = 10, wrap = WORD)
        self.result.grid(row = 4, column = 0)

        self.likes_blue = BooleanVar()
        self.likes_red = BooleanVar()
        self.likes_green = BooleanVar()

        self.blue = Checkbutton(text="niebieski", variable=self.likes_blue, comand=self.update_result())
        self.blue.grid(row = 1, column = 0, sticky = W)

        self.red = Checkbutton(text="czerwony", variable=self.likes_red, comand=self.update_result())
        self.red.grid(row = 2, column = 0, sticky = W)

        self.green = Checkbutton(text = "zielony", variable=self.likes_green, comand = self.update_result())
        self.green.grid(row = 3, column = 0, sticky = W)

    def update_result(self):
        self.likes = "Lubisz kolory: "

        if self.likes_blue.get():
            self.likes += "niebieski" + ", "
        if self.likes_red.get():
            self.likes += "czerwony" + ", "
        if self.likes_green.get():
            self.likes += "zielony" + ", "

        self.result.delete(0.0, END)
        self.result.insert(0.0, self.likes)

### main

window = Tk()
window.title("Ulubiane kolory")
window.geometry("300x200")
window.grid()

brd = Board(window)

window.mainloop()

 

1 odpowiedź

+2 głosów
odpowiedź 5 września 2018 przez adrian17 Ekspert (349,420 p.)
wybrane 8 września 2018 przez El Lirón
 
Najlepsza
self.blue = Checkbutton(text="niebieski", variable=self.likes_blue, comand=self.update_result())

- "comand"

- wywołujesz metodę update_result() i przekazujesz jej wynik zamiast przekazywać samą metodę jako argument

komentarz 8 września 2018 przez El Lirón Obywatel (1,350 p.)
Dziękuję za pomoc. Ja po angielsku bardzo lubię mówić, niestety jeśli chodzi o pisanie jestem półanalfabetą :D

Już rozumiem. Czyli ja przez pomyłkę przekazywałem do command to, co ma dopiero wyjść z funkcji update_result. A mam nakazać wywołanie tej funkcji, prawda?
1
komentarz 8 września 2018 przez adrian17 Ekspert (349,420 p.)
Tak. Przekazujesz funkcję, która ma być wywołana przy wciśnięciu guzika.

Podobne pytania

0 głosów
1 odpowiedź 175 wizyt
pytanie zadane 31 sierpnia 2018 w Python przez El Lirón Obywatel (1,350 p.)
0 głosów
1 odpowiedź 834 wizyt
0 głosów
1 odpowiedź 414 wizyt

93,008 zapytań

141,975 odpowiedzi

321,256 komentarzy

62,350 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...