Seite 1 von 1

GtkEntry auslesen auf Knopfdruck

Verfasst: Sonntag 16. September 2018, 11:37
von TimeMen
Hallo,
Folgendes Problem.
Ich habe ein GtkEntry und dahinter einen Button, der beim klicken den Inhalt des Entries auslesen soll.
Leider bekomme ich immer den Fehler, dass das Programm den GtkEntry nicht kennt.

Code: Alles auswählen

import gi
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk, GdkPixbuf, Gdk
from google_images_download import google_images_download as gid
responste = gid.googleimagesdownload()
import os, sys


#Comment the first line and uncomment the second before installing
#or making the tarball (alternatively, use project variables)
UI_FILE = "src/pygtk_foobar.ui"
#UI_FILE = "/usr/local/share/pygtk_foobar/ui/pygtk_foobar.ui"


class GUI:
	def __init__(self):
		# window initialization
		self.builder = Gtk.Builder()
		self.builder.add_from_file(UI_FILE)
		self.builder.connect_signals(self)
		window = self.builder.get_object('window')
		window.show_all()

		# data initialization
		

	def on_window_destroy(self, window):
		Gtk.main_quit()

	def app_overview(self, window):
		print("Overview")

	def app_back(self, window):
		print("Back")

	def app_save(self, window):
		print("Save")

	def app_forward(self, window):
		print("Forward")

	def app_search(self, window):
		print("Search")
		species = str(Tbo_Species.get_text())	<-- Hier muss der Fehler laut Fehlermeldung sein! (mit self.Tbo_Species geht es nicht).
		#arguments = {"keywords":
		print("Species:", species)

	def app_quit(self, window):
		Gtk.main_quit()

def main():
	app = GUI()
	Gtk.main()
		
if __name__ == "__main__":
	sys.exit(main())
Fehlermeldung:

Code: Alles auswählen

Traceback (most recent call last):
  File "/home/rtfm/pygtk-foobar/src/pygtk_foobar.py", line 63, in app_search
    species = str(Gtk.Tbo_Species.get_text())
  File "/usr/lib/python2.7/dist-packages/gi/overrides/__init__.py", line 39, in __getattr__
    return getattr(self._introspection_module, name)
  File "/usr/lib/python2.7/dist-packages/gi/module.py", line 137, in __getattr__
    self.__name__, name))
AttributeError: 'gi.repository.Gtk' object has no attribute 'Tbo_Species'
----------------------------------------------
Program exited with errcode (0)
Wo ich den Fehler vermute habe ich im Codesnippet gekennzeichnet, leider spuckt auch das Internet dazu wenig aus, bzw. schreibt mir vor es wie oben getan zu versuchen. Was mache ich denn hier falsch? Seit nunmehr 5 Stunden versuche ich herauszufinden wo mein Fehler ist, nur leider scheint mir Google nicht wohlgesonnen zu sein oder ich bin einfach zu blöd.

LG,
TimeMen

Re: GtkEntry auslesen auf Knopfdruck

Verfasst: Sonntag 16. September 2018, 11:52
von __deets__
Also zuerstmal passt der Code nicht zu Fehlermeldung. Das verwirrt unnoetig, und kann im schlimmsten Fall verhindern, dass man den Fehler findet.

Und jetzt schau mal in deinen eigenen Code. Da gibt es eine andere Stelle, an der du dich auf ein bestimmtes Widget beziehst. Und da steht auch, wie daran kommst. Das, was du da machst, musst du auch in deinem Callback machen.

Re: GtkEntry auslesen auf Knopfdruck

Verfasst: Sonntag 16. September 2018, 12:15
von TimeMen
Das ist exakt der Code den ich ausgeführt habe und die exakte Fehlermeldung dazu.
Was für ein bestimmtes Widget?

Meinst du das hier?

Code: Alles auswählen

		window = self.builder.get_object('window')

Re: GtkEntry auslesen auf Knopfdruck

Verfasst: Sonntag 16. September 2018, 12:41
von __deets__
Es ist bestimmt nicht der Code, da fehlt ein Gtk im Code, das es im stacktrace gibt.

Und ja. So wie du an das window kommst, kommst du auch an Andere gui builder Widgets.

Re: GtkEntry auslesen auf Knopfdruck

Verfasst: Sonntag 16. September 2018, 12:57
von TimeMen
Dann probiere ich das so wie du sagst.
Allerdings kann ich dir gerne einen Beweis-Screenshot schicken, der dir zeigt, dass der Stacktrace und der Code zusammengehören.
Außerdem, was würde es bringen einen Code und den Stacktrace eines anderen Programms zu schicken?

Re: GtkEntry auslesen auf Knopfdruck

Verfasst: Sonntag 16. September 2018, 13:52
von __blackjack__
@TimeMen: Du kannst keinen Beweis-Screenshot schicken, denn wenn der genau das gleiche zeigt wie im ersten Beitrag, dann ist der ja offensichtlich manipuliert, denn Quelltext und Traceback passen nicht zusammen.

Re: GtkEntry auslesen auf Knopfdruck

Verfasst: Sonntag 16. September 2018, 16:08
von __deets__
@TimeMan: das trace back & Code nicht passen ist keine Frage des Glaubens, sondern ein Fakt. Du zeigst Code der einen NameError werfen würde, aber einen AttributeError als Fehler. Du hast da beim rum probieren offensichtlich mehrere Dinge Probiert und dich dann verhaspelt. Kann ja passieren. Aber darauf zu beharren, das was wir sehen wahr ist - kA was das bringen soll.

Re: GtkEntry auslesen auf Knopfdruck

Verfasst: Donnerstag 15. November 2018, 12:00
von martinjo
Was ist den Tbo_Species und wo wird es definiert?

Also grundsätzlich würde ich vermuten, da muss, ähnlich wie bei dem window, das Entry erst holen und in der Funktion dann auslesen.:

self.entry = self.builder.get_object('entry')
self.entry.get_text()