Python3: невозможно получить значение Gtk.SpinButton - PullRequest
1 голос
/ 26 июня 2019

Я пытаюсь создать программу в Gtk3+. Однако я не могу понять, как вызвать мое значение Gtk.SpinButton, чтобы использовать его для определения количества действий, которые нужно выполнить позже в коде (еще не написано).

Класс initiate() в конце кода - это место, где я буду выполнять команды на основе числа, введенного в gtk.spinbutton. На данный момент я оставил простую команду печати, чтобы я мог сказать, когда мой код работает правильно.

Извиняюсь, если я делюсь слишком большим количеством кода, я не знаю, как еще правильно показать мою проблему, не поделившись всем этим.

import gi
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk
import threading

class MainWindow(Gtk.Window):

        def __init__(self):
                Gtk.Window.__init__(self, title="My App")
                self.set_default_size(100, 100)
                self.set_border_width(10)

                #box
                self.box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=100)
                self.add(self.box)

                #label
                label = Gtk.Label()
                label.set_text("Welcome to My App!")
                self.box.pack_start(label, True, True, 0)

                #Number of files too rename
                self.renamenum = Gtk.SpinButton()
                self.box.pack_start(self.renamenum, True, True, 0)
                numfiles = self.renamenum.get_value();

                #Button1
                self.button1 = Gtk.Button(label="Start")
                self.button1.connect("clicked", self.button1_clicked)
                self.box.pack_end(self.button1, True, True, 0)

        def button1_clicked(self, widget):
                dialog = PopUp(self)
                response = dialog.run()
                if response == Gtk.ResponseType.CANCEL:
                        dialog.destroy()
                        Gtk.main_quit()
                else:
                        pass

class PopUp(Gtk.Dialog):

        def __init__(self, parent):
                Gtk.Dialog.__init__(self, "Renaming Files", parent, 
Gtk.DialogFlags.MODAL, (
                        "Cancel", Gtk.ResponseType.CANCEL
                ))
                self.set_default_size(500, 500)
                self.set_border_width(50)

                area = self.get_content_area()
                area.add(Gtk.Label("Running..."))
                self.show_all()

                initiate()

class initiate(MainWindow):

        def __init__(self):
                self.var1 = MainWindow()
                num = int(self.var1.numfiles)
                print (numfiles)

window = MainWindow()
window.connect("delete-event", Gtk.main_quit)
window.show_all()
Gtk.main()

Ожидаемые результаты, которые я хочу получить, - это число, введенное в gtk.spinbutton, для печати на терминале. Вместо этого я получаю это:

Traceback (most recent call last):
  File "test4.py", line 33, in button1_clicked
    dialog = PopUp(self)
  File "test4.py", line 54, in __init__
    initiate()
  File "test4.py", line 60, in __init__
    num = int(self.var1.numfiles)
AttributeError: 'MainWindow' object has no attribute 'numfiles'
...