WorldViz User Forum

WorldViz User Forum (https://forum.worldviz.com/index.php)
-   Vizard (https://forum.worldviz.com/forumdisplay.php?f=17)
-   -   table issues (https://forum.worldviz.com/showthread.php?t=1472)

xingxing 05-04-2008 03:05 AM

table issues
 
Hi farshizzo.
Could you please help me out again? thanks in advance.

several weeks ago, you taught me how to make a pop-up table in Vizard. and you said it was an undocumented module. I tried to get a space to put a picture link so that I can show the table I want but I failed. My table is like the following:

ID
(input field)
Attrbute 1 Attrbute 5
(input field) (input field)
Attrbute 2 Attrbute 6
(input field) (input field)
Attrbute 3
(input field)
Attrbute 4
(input field)

(accept butten) (infer butten) (cancel butten)

I need to make this table dragable and the size can be changed like a normal window in WinXP because I need to put it on the left side of the screen. and also I need it transparent so that I can see the avatars behind it. In addition , how can I make a screen shot in Vizard? I really need to make it reach my requirement. So please help me out.
If someone else can help me this, I also appreciate it. Thanks a lot.

farshizzo 05-05-2008 06:56 PM

When you post on the forum you can attach images. Just click the Manage Attachments button and it will allow you to upload an image from your computer.

The vizdlg module does not have built-in support for dragging/resizing. You can make the background of the dialog semi-transparent by using the following code:
Code:

dlg.background.alpha(0.6)
You can take a screenshot of your Vizard world by pressing CTRL+F9. It will create a timestamped bmp image in your script directory.

xingxing 05-06-2008 05:38 AM

1 Attachment(s)
Attachment 237

Thanks for help. The table I want is like this one. In addition, if the table cannot be dragable and resizable, I just wanna put it on the left side of the screen. How can I do this? I think it's like manually set the position value. Could you please tell me the solution? Thank you.:rolleyes:

farshizzo 05-07-2008 09:55 AM

You can use the setPosition() command on your panel to place it on the left side of the screen. By default the panel is aligned to its upper left corner, so you can place it on the left side of the screen by using the following code:
Code:

panel.setPosition(10,500)

xingxing 05-08-2008 06:26 PM

Thank you very much. :) I tried that background attribute and it's ok. The setPosition one which I tried, it's not working. I know I may put it in the wrong position but because the form is using vizdlg. I see that link function and it can only link it to leftcenter of the whole picture. And actually only part of the table can be seen in the screen by that link function. I still cannot put it on the leftupper corner of the screen so that I can see the entire table in the screen. I just put my code here. Could you please tell me where I should put it?
In addition, the textbox is still not transparent though the table background is. Is is possible also make the textbox transparent? Since I tried that background which textbox doesn't have, could you please also tell me how I can do this?

Thank you.

Here is my code.:rolleyes:
Code:

#######################form starts here
import viz
viz.go()

import vizdlg

class MyForm(vizdlg.Dialog):
        def __init__(self,**kw):
               
                #Initialize base class
                vizdlg.Dialog.__init__(self,**kw)
               
(layout=vizdlg.LAYOUT_HORZ_CENTER,border=False,background=False,margin=0)

#                #Add row to dialog content section

                #Add a subgroup containing slider/textbox
                group0 = vizdlg.Panel(background=False)

                #Add row for textbox to subgroup
                row = vizdlg.Panel(layout=vizdlg.LAYOUT_HORZ_CENTER,border=False,background=False,margin=6)

                row.addItem(viz.addText('Character No.'))
                self.textbox0 = row.addItem(viz.addTextbox())
                group0.addItem(row)
               
                #Add group to dialog content section
                self.content.addItem(group0)

                #Add a new subgroup containing other textboxes ( coded by me )
#                group1 = vizdlg.Panel()

                #Add row for textboxes
                row1 = vizdlg.Panel(layout=vizdlg.LAYOUT_HORZ_CENTER,border=False,background=False,margin=10)
                row1.addItem(viz.addText('Surname'))
                self.textbox1 = row1.addItem(viz.addTextbox())
                self.content.addItem(row1)
                row2 = vizdlg.Panel(layout=vizdlg.LAYOUT_HORZ_CENTER,border=False,background=False,margin=10)
                row2.addItem(viz.addText('Given name'))
                self.textbox2 = row2.addItem(viz.addTextbox())
                self.content.addItem(row2)
                row3 = vizdlg.Panel(layout=vizdlg.LAYOUT_HORZ_CENTER,border=False,background=False,margin=10)
                row3.addItem(viz.addText('Sex'))
                self.textbox3 = row3.addItem(viz.addTextbox())
                self.content.addItem(row3)
               
                #Add a new row
                row4 = vizdlg.Panel(layout=vizdlg.LAYOUT_HORZ_CENTER,border=False,background=False,margin=10)
                row4.addItem(viz.addText('Date of Birth'))
                self.textbox4 = row4.addItem(viz.addTextbox())
                self.content.addItem(row4)
                row5 = vizdlg.Panel(layout=vizdlg.LAYOUT_HORZ_CENTER,border=False,background=False,margin=10)
                row5.addItem(viz.addText('Country of Birth'))
                self.textbox5 = row5.addItem(viz.addTextbox())
                self.content.addItem(row5)
                row6 = vizdlg.Panel(layout=vizdlg.LAYOUT_HORZ_CENTER,border=False,background=False,margin=10)
                row6.addItem(viz.addText('City of Birth'))
                self.textbox6 = row6.addItem(viz.addTextbox())
                self.content.addItem(row6)

                #Add group to dialog content section

                #Add a new subgroup containing other textboxes ( coded by me )
                group2 = vizdlg.Panel()

                #Add row for textboxes
                row7 = vizdlg.Panel(layout=vizdlg.LAYOUT_HORZ_CENTER,border=False,background=False,margin=10)
                row7.addItem(viz.addText('Passport No.'))
                self.textbox7 = row7.addItem(viz.addTextbox())
                self.content.addItem(row7)
                row8 = vizdlg.Panel(layout=vizdlg.LAYOUT_HORZ_CENTER,border=False,background=False,margin=10)
                row8.addItem(viz.addText('Purpose'))
                self.textbox8 = row8.addItem(viz.addTextbox())
                self.content.addItem(row8)
                row9 = vizdlg.Panel(layout=vizdlg.LAYOUT_HORZ_CENTER,border=False,background=False,margin=10)
                row9.addItem(viz.addText('Employment State'))
                self.textbox9 = row9.addItem(viz.addTextbox())
                self.content.addItem(row9)
                #Add the row to subgroup

                #Add a new row
                row0 = vizdlg.Panel(layout=vizdlg.LAYOUT_HORZ_CENTER,border=False,background=False)
                row0.addItem(viz.addText('Criminal History'))
                self.checkbox = row0.addItem(viz.addCheckbox())
                #Add the row to subgroup
                group2.addItem(row0)

                #Add group to dialog content section
                self.content.addItem(group2)


                #Hide cancel button
                self.cancel.visible(1)
               
                #Rename accept button to 'submit'
                self.accept.message('Submit')
               



import viztask

def FormTask():

        #Create input form
        form = MyForm(title='Personal Details',background=False)
#        form.background.alpha(0.1)
#        form.setPosition(10,500)
        #Link form to center of screen
        viz.link(viz.MainWindow.CenterCenter,form)

        while True:
               
                #Wait for 'p' key to be pressed
                yield viztask.waitKeyDown('p')
               
                #TODO: Pause simulation
               
                #Display form
                yield form.show()
                if form.accepted:
                        #User pressed 'Submit', process data
                        form_data = open('personal_details_form_'+str(form.textbox0.get()),'w')
                        data = 'Character No. : ' + form.textbox0.get() + '\n' + 'Surame : ' + form.textbox1.get() + '\n' + 'Given name : ' + form.textbox2.get() + '\n' + 'Sex : ' + form.textbox3.get() + '\n' + 'Date of Birth : ' + form.textbox4.get() + '\n' + 'Country of Birth : ' + form.textbox5.get() + '\n' + 'City of Birth : ' + form.textbox6.get() + '\n' + 'Passport No. : ' + form.textbox7.get() + '\n' + 'Purpose : ' + form.textbox8.get() + '\n' + 'Employment State : ' + form.textbox9.get() + '\n'
                        form_data.write(data)
                        form_data.flush()
               
                #TODO: Resume simulation
               
        #Remove form when completely finished with it
        form.remove()
       
viztask.schedule( FormTask() )

###################form ends here


farshizzo 05-09-2008 12:21 PM

The setPosition is not doing anything because it is being overwritten by the link you created with it. Try the following code to place your form on the left side of the screen.
Code:

form = MyForm(title='Personal Details',background=False,align=vizdlg.ALIGN_LEFT_TOP)
viz.link(viz.MainWindow.LeftTop,form,offset=[10,-10,0])



All times are GMT -7. The time now is 10:50 PM.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Copyright 2002-2023 WorldViz LLC