单击按钮后在窗口中显示文本

问题描述 投票:1回答:1

按下按钮后,我想在按钮下方的窗口中显示文本。我可以将文本写入控制台,但不能将其写入窗口。代码的第28行。请给我一个建议。谢谢。

编辑:还有一个问题:我想通过GTK Entry输入数字值,并通过我的def faktorial(f)输入阶乘。如何在Okno类中调用此def,并使用命令print在代码行34上打印结果?


import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk

class Okno(Gtk.Window):
        def __init__(self):
            Gtk.Window.__init__(self, title="Button Demo")

            pozice = Gtk.Grid()
            self.add(pozice)

            #textnad oknem
            self.vstup1 = Gtk.Label()
            self.vstup1.set_text("Před textem")
            pozice.attach(self.vstup1, 10,10,10,10)

            # okno se vstupem
            self.vstup = Gtk.Entry()
            self.vstup.set_text("Můj vstupní text")
            pozice.attach(self.vstup, 10,20,10,10)

            #tlačítko potvrď
            tlacitko = Gtk.Button.new_with_label("klikni")
            tlacitko.connect("clicked", self.kliknuto)
            pozice.attach(tlacitko, 10,30,10,10)

            self.label = Gtk.Label()
            pozice.attach(self.label, 10,40,10,10)

        def kliknuto(self, tlacitko):
            self.label.set_text("kliknuto")
            vystup = self.vstup.get_text() #získá obsah vstupu Entry
            self.label.set_text(vystup) #vypíše text do okna
            print(faktorial(vstup))


        def faktorial(f):
            """ vypočítá faktoriál celého čísla """
            vysledek = 1
            while f > 0:
                vysledek = vysledek * f
                f = f - 1
            return vysledek

okno = Okno()
okno.connect("destroy", Gtk.main_quit)
okno.show_all()
Gtk.main()
python-3.x gtk3
1个回答
0
投票

您可以在按钮下方添加新的Gtk.Label,并在每次单击按钮时设置文本。

import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk

class Okno(Gtk.Window):
        def __init__(self):
            Gtk.Window.__init__(self, title="Button Demo")

            pozice = Gtk.Grid()
            self.add(pozice)

            #textnad oknem
            self.vstup1 = Gtk.Label()
            self.vstup1.set_text("Před textem")
            pozice.attach(self.vstup1, 10,10,10,10)

            # okno se vstupem
            self.vstup = Gtk.Entry()
            self.vstup.set_text("Můj vstupní text")
            pozice.attach(self.vstup, 10,20,10,10)

            #tlačítko potvrď
            tlacitko = Gtk.Button.new_with_label("klikni")
            tlacitko.connect("clicked", self.kliknuto)
            pozice.attach(tlacitko, 10,30,10,10)

            self.label = Gtk.Label()
            pozice.attach(self.label, 10,40,10,10)

        def kliknuto(self, tlacitko, pozice=()):
            self.label.set_text("kliknuto")

okno = Okno()
okno.connect("destroy", Gtk.main_quit)
okno.show_all()
Gtk.main()

[如果您希望每次单击按钮并显示条目时将文本添加到列表,则可以将文本添加到Gio.ListStore模型,并将其绑定到Gtk.ListBox实例,并创建一个[ C0]。见下文:

Gtk.Label
© www.soinside.com 2019 - 2024. All rights reserved.