Я пытаюсь создать программу в 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'