[Client/Python]ListBoxEx Itemskalierung

03/06/2016 12:34 _Xer0x_#1
Hallo Leute,

ich habe ein kleines Problem beim Hinzufügen von Items in einer ListBoxEx über Python.

Ich versuche im Moment ein Thinboard hinzuzufügen, das klappt auch ganz gut.
Allerdings habe ich das Problem das die Boxen zu klein sind.

Hier mal der Codes der das ThinBoard hinzufügt:
Code:
def btnm1_func(self):
	self.cmp = Component()
		
	for x in range(1, 5):
		t = x*50
		self.b = self.ItemBox(t)
		self.list_ItemBox.AppendItem(self.b)
			
		
def ItemBox(self, x):
	self.itm = self.cmp.ThinBoard(self.list_ItemBox, FALSE, 168, x, 350, 50, FALSE)
	self.txt = self.cmp.TextLine(self.itm, 'text '+str(x), 2, 2, self.comp.RGB(255, 255, 255))
	return self.itm
hier der Codes der Funktion Component():
Code:
def ThinBoard(self, parent, moveable, x, y, width, heigh, center):
	thin = ui.ThinBoard()
	if parent != None:
		thin.SetParent(parent)
	if moveable == TRUE:
		thin.AddFlag('movable')
		thin.AddFlag('float')
	thin.SetSize(width, heigh)
	thin.SetPosition(x, y)
	if center == TRUE:
		thin.SetCenterPosition()
	thin.Show()
	return thin
Wenn ich nun aber in der Board auf den Button klicke, also die Items hinzufügen möchte, sieht das so auß:
[Only registered and activated users can see links. Click Here To Register...]

Das Board in das ich das ThinBoard setzen will ist groß genug.
Hat da einer ne Idee wiso das so ist oder wie ich es beheben kann?

MfG Xer0x
03/06/2016 12:55 .Various#2
Code:
	for x in range(1, 5):
		t = x*50
		self.b = self.ItemBox(x)
		self.list_ItemBox.AppendItem(self.b)
Du willst hier sicherlich die Variable t verwenden, nicht x :)
03/06/2016 13:52 _Xer0x_#3
@[Only registered and activated users can see links. Click Here To Register...]: Da hast du Recht ich möchte die Variable "t" benutzen, hab das nun geändert.
Das Problem besteht leider weiterhin.

MfG Xer0x
03/06/2016 16:51 .Various#4
Quote:
Originally Posted by _Xer0x_ View Post
@[Only registered and activated users can see links. Click Here To Register...]: Da hast du Recht ich möchte die Variable "t" benutzen, hab das nun geändert.
Das Problem besteht leider weiterhin.

MfG Xer0x
Naja, hast du denn auch die Funktion AppendItem abgeändert?
03/06/2016 17:51 _Xer0x_#5
Was genau hätte ich denn ändern sollen ?

MfG Xer0x
03/06/2016 17:56 .Various#6
Code:
	def AppendItem(self, newItem):
		newItem.SetParent(self)
		newItem.SetSize(self.itemWidth, self.itemHeight)

		pos=len(self.itemList)
		if self.__IsInViewRange(pos):
			(x, y)=self.GetItemViewCoord(pos, newItem.GetWidth())
			newItem.SetPosition(x, y)
			newItem.Show()
		else:
			newItem.Hide()

		self.itemList.append(newItem)
Naja, du siehst ja, dass die Positionen etc. dort gesetzt werden :)
03/06/2016 18:02 _Xer0x_#7
Ja schon aber mein Problem is ja nicht die position sondern eher die Größe des ganzen.
Es sollte ja eigentlich viel größer sein.

MfG Xer0x
03/06/2016 19:52 .Kibito#8
Quote:
Originally Posted by _Xer0x_ View Post
Ja schon aber mein Problem is ja nicht die position sondern eher die Größe des ganzen.
Es sollte ja eigentlich viel größer sein.

MfG Xer0x
Bei Listboxen gibt es noch folgende Optionen:
Code:
		self.ItemList.SetItemSize(100,30) #größe der items
		self.ItemList.SetItemStep(20) #abstand zwischen den items
03/06/2016 20:40 _Xer0x_#9
Ich danke euch beiden für eure Hilfe.
@[Only registered and activated users can see links. Click Here To Register...]: Es hat funktioniert, sieht im Moment so ausß:
[Only registered and activated users can see links. Click Here To Register...]

Jetzt habe ich allerdings noch ein weiteres Problem, wie kann ich diese ThinBoard seperat füllen?

MfG Xer0x
03/06/2016 20:51 .Kibito#10
Quote:
Originally Posted by _Xer0x_ View Post
Ich danke euch beiden für eure Hilfe.
@[Only registered and activated users can see links. Click Here To Register...]: Es hat funktioniert, sieht im Moment so ausß:
[Only registered and activated users can see links. Click Here To Register...]

Jetzt habe ich allerdings noch ein weiteres Problem, wie kann ich diese ThinBoard seperat füllen?

MfG Xer0x
Code:
ThinBoards = {}

for i blabla:
   self.ThinBoards[i] = ui.ThinBoard()
   -- und so weiter
   self.DeineListbox.AppendItem(self.ThinBoards[i])
03/06/2016 21:02 _Xer0x_#11
Danke .Kibito, ich meinte das aber nicht so sondern ich brauch in jedem ItemBoard(ThinBoard) eine Image min 2 Textlines und min 1 Button.
Das Image und die min 2 Textlines sollte ich halt über eine Quest im Server füllen können.

MfG Xer0x
03/06/2016 21:14 .Kibito#12
Quote:
Originally Posted by _Xer0x_ View Post
Danke .Kibito, ich meinte das aber nicht so sondern ich brauch in jedem ItemBoard(ThinBoard) eine Image min 2 Textlines und min 1 Button.
Das Image und die min 2 Textlines sollte ich halt über eine Quest im Server füllen können.

MfG Xer0x
Code:
ThinBoards = {}

for i in range(variableVonQuest) oder table von der quest:
	self.ThinBoards[i] = {}
	self.ThinBoards[i]["board"] = ui.ThinBoard()
	self.ThinBoards[i]["board"].SetParent(self.Board)
	self.ThinBoards[i]["board"].SetSize(300,40)
	self.ThinBoards[i]["board"].Show()
	
	self.ThinBoards[i]["text1"] = ui.Textline()
	self.ThinBoards[i]["text1"].SetParent(self.ThinBoards[i]["board"])
	
	self.ThinBoards[i]["text2"] = ui.Textline()
	self.ThinBoards[i]["text2"].SetParent(self.ThinBoards[i]["board"])
	
	
	
	self.ThinBoards[i]["img"] = ui.Imagebox()
	self.ThinBoards[i]["img"].SetParent(self.ThinBoards[i]["board"])
   -- und so weiter
   self.DeineListbox.AppendItem(self.ThinBoards[i]["board"])
sollte doch so funzen du musst da halt noch bei jeder textline und so den rest definieren
03/06/2016 21:49 _Xer0x_#13
Ich danke dir ein weiteres mal, jetzt sieht es so auß:

[Only registered and activated users can see links. Click Here To Register...]

wenn ich noch einmal Probleme haben sollte melde ich mich.

Ich adde dich mal in Skype.

MfG Xer0x
03/07/2016 23:13 gerald500#14
Quote:
Originally Posted by _Xer0x_ View Post
Danke .Kibito, ich meinte das aber nicht so sondern ich brauch in jedem ItemBoard(ThinBoard) eine Image min 2 Textlines und min 1 Button.
Das Image und die min 2 Textlines sollte ich halt über eine Quest im Server füllen können.

MfG Xer0x

du kannst ja den stuff vom server z.b in ein dict in der constinfo speichern und beim senden kannst du fragen ob deine gui geöffnet ist und dann einfach die texte etc neu setzen und ansonsten ziehst du dir beim öffnen der gui sowieso den stuff aus der constinfo ( du musst ihn halt beim einloggen schon an den client senden)

mfg
03/08/2016 07:42 _Xer0x_#15
Danke sehr werde es versuchen :D

MfG Xer0x