def init(self): box = PictureBox() box.Dock = DockStyle.Fill box.SizeMode = PictureBoxSizeMode.AutoSize box.Image = self.image self.image = box.Image self.Controls.Add(box) self.ClientSize = box.Size
def __init__(self, bitmap): Form.__init__(self) picBox = PictureBox() picBox.SizeMode = PictureBoxSizeMode.AutoSize picBox.Image = bitmap picBox.Dock = DockStyle.Fill self.Controls.Add(picBox) self.Show() self.Width = bitmap.Width + 20 self.Height = bitmap.Height + 20
def __init__(self): Form.__init__(self) self.ClientSize = Size(400, 250) self.Text = "About FLExTools" self.FormBorderStyle = FormBorderStyle .Fixed3D self.Icon = Icon(UIGlobal.ApplicationIcon) pb = PictureBox() pb.Image = Image.FromFile(UIGlobal.ApplicationIcon) pb.BackColor = UIGlobal.helpDialogColor pb.SizeMode = PictureBoxSizeMode.CenterImage self.Controls.Add(pb) self.Controls.Add(AboutInfo())
def init(self): """Initialize the form. Returns ------- None """ box = PictureBox() box.Dock = DockStyle.Fill box.SizeMode = PictureBoxSizeMode.AutoSize box.Image = self.image self.image = box.Image self.Controls.Add(box) self.ClientSize = box.Size
def setup(self, filename, title): # adjust the form's client area size to the picture self.ClientSize = Size(300, 300) self.Text = title self.filename = filename self.image = Image.FromFile(self.filename) pictureBox = PictureBox() # this will fit the image to the form pictureBox.SizeMode = PictureBoxSizeMode.StretchImage pictureBox.Image = self.image # fit the picture box to the frame pictureBox.Dock = DockStyle.Fill self.Controls.Add(pictureBox) self.Show()
ART_AREA = Panel() ART_AREA.Width = EXPLORER_VISIBLE_INFORMATION_AREA.Width * 0.4 ART_AREA.Dock = DockStyle.Left INFO_AREA = Panel() INFO_AREA.Width = EXPLORER_VISIBLE_INFORMATION_AREA.Width * 0.6 INFO_AREA.Dock = DockStyle.Right #INFO_AREA.BackColor = Color.Blue EXPLORER_VISIBLE_INFORMATION_AREA.Controls.Add(ART_AREA) EXPLORER_VISIBLE_INFORMATION_AREA.Controls.Add(INFO_AREA) ######################################### # ART AREA CONTROLS #################### COVER_ART = PictureBox() COVER_ART.SizeMode = PictureBoxSizeMode.StretchImage #COVER_ART.Image = Bitmap(MemoryStream(WebClient().DownloadData('https://upload.wikimedia.org/wikipedia/en/2/2c/Metallica_-_Metallica_cover.jpg'))) #COVER_ART.Image = Bitmap(FileInterface(r'../test/Blackened.mp3').GetPicture) COVER_ART.BackColor = Color.White COVER_ART.Size = Size(160, 160) COVER_ART.Top = 45 COVER_ART.Left = (ART_AREA.Width - COVER_ART.Width) / 2 ART_AREA.Controls.Add(COVER_ART) ######################################### # INFO AREA CONTROLS ################### # Construct four identical textboxes # Each Formbox is 40 units above the next FORMBOXES["Title"] = Formbox("Title")
def draw(self, show=True, filename=None, update=False, usecoords=False): """Create a 2D depiction of the molecule. Optional parameters: show -- display on screen (default is True) filename -- write to file (default is None) update -- update the coordinates of the atoms to those determined by the structure diagram generator (default is False) usecoords -- don't calculate 2D coordinates, just use the current coordinates (default is False) Tkinter and Python Imaging Library are required for image display. """ if update: mol = self.Mol else: mol = self.Mol.clone() if not usecoords: mol.layout() if show or filename: renderer = IndigoRenderer(indigo) indigo.setOption("render-output-format", "png") indigo.setOption("render-margins", 10, 10) indigo.setOption("render-coloring", "True") indigo.setOption("render-image-size", 300, 300) indigo.setOption("render-background-color", "1.0, 1.0, 1.0") if self.title: indigo.setOption("render-comment", self.title) if filename: filedes = None else: filedes, filename = tempfile.mkstemp() renderer.renderToFile(mol, filename) if show: if sys.platform[:4] == "java": image = javax.imageio.ImageIO.read(java.io.File(filename)) frame = javax.swing.JFrame(visible=1) frame.getContentPane().add( javax.swing.JLabel(javax.swing.ImageIcon(image))) frame.setSize(300, 300) frame.setDefaultCloseOperation( javax.swing.WindowConstants.DISPOSE_ON_CLOSE) frame.show() elif sys.platform[:3] == "cli": if filedes: errormessage = ( "It is only possible to show the molecule if you " "provide a filename. The reason for this is that I kept " "having problems when using temporary files.") raise RuntimeError(errormessage) form = Form() form.ClientSize = Size(300, 300) form.Text = self.title image = Image.FromFile(filename) box = PictureBox() box.SizeMode = PictureBoxSizeMode.StretchImage box.Image = image box.Dock = DockStyle.Fill form.Controls.Add(box) form.Show() Application.Run(form) else: if not PILtk: errormessage = ( "Tkinter or Python Imaging " "Library not found, but is required for image " "display. See installation instructions for " "more information.") raise ImportError(errormessage) root = tk.Tk() root.title((hasattr(self, "title") and self.title) or self.__str__().rstrip()) frame = tk.Frame(root, colormap="new", visual='truecolor').pack() image = PIL.open(filename) imagedata = PILtk.PhotoImage(image) label = tk.Label(frame, image=imagedata).pack() quitbutton = tk.Button( root, text="Close", command=root.destroy).pack(fill=tk.X) root.mainloop() if filedes: os.close(filedes) os.remove(filename)
def __init__(self): #the __init__ method inside a class is its constructor self.Text = "AU London" #text that appears in the GUI titlebar self.Icon = Icon.FromHandle( icon.GetHicon() ) #takes a bitmap image and converts to a file that can be used as a Icon for the titlebar self.BackColor = Color.FromArgb(255, 255, 255) self.WindowState = FormWindowState.Normal # set maximised minimised or normal size GUI self.CenterToScreen() # centres GUI to the middle of your screen self.BringToFront() #brings the GUI to the front of all opens windows. self.Topmost = True # true to display the GUI infront of any other active forms screenSize = Screen.GetWorkingArea( self ) #get the size of the computers main screen, as the form will scale differently to different sized screens self.Width = screenSize.Width / 4 #set the size of the form based on the size of the users screen. this helps to ensure consistant look across different res screens. self.Height = screenSize.Height / 4 uiWidth = self.DisplayRectangle.Width #get the size of the form to use to scale form elements uiHeight = self.DisplayRectangle.Height #self.FormBorderStyle = FormBorderStyle.FixedDialog # fixed dialog stops the user from adjusting the form size. Recomended disabling this when testing to see if elements are in the wrong place. self.userOutput = userOutputDefaultStr #create a container to store the output from the form self.runNextOutput = False #set these default values #############-------------\-------------############# spacing = 10 #spacing size for GUI elements to form a consistent border # creates the text box for a info message userMessage = Label() #label displays texts font = Font("Helvetica ", 10) userMessage.Text = message userMessage.Font = font userMessage.Location = Point( spacing, spacing ) #all location require a point object from system.Drawing to set the location. userMessage.Size = Size( uiWidth - (spacing * 2), (uiHeight / 4) ) #size the control with the width of the GUI to ensure it scales with different screen self.Controls.Add(userMessage) #this adds control element to the GUI #############-------------\-------------############# #logo file logo = PictureBox() logo.Image = logoFile ratio = float(logo.Height) / float( logo.Width ) #needs to be a float as int will round to the nearest whole number logo.Size = Size( uiWidth / 4, (uiHeight / 4) * ratio ) #scale the image by the ratio between the images height & width logo.Location = Point(spacing, (uiHeight - logo.Height) - spacing) logo.SizeMode = PictureBoxSizeMode.Zoom # zooms the image to fit the extent logo.Anchor = ( AnchorStyles.Bottom | AnchorStyles.Left ) #anchor styles lock elements to a given corner of the GUI if you allow users change size self.Controls.Add(logo) #logo.BorderStyle = BorderStyle.Fixed3D #gives a border to the panel to test its location #############-------------\-------------############# #combox drop down cBox = ComboBox() #dropdown control form cBox.Location = Point(spacing, uiHeight / 3) cBox.Width = uiWidth - (spacing * 2) cBox.Items.AddRange( listInput ) # Adds an array of items to the list of items for a ComboBox. cBox.DropDownStyle = ComboBoxStyle.DropDownList #setting to dropdown list prevents users from being able to add aditional text values cBox.SelectedIndexChanged += self.dropDownOutput #.Click+= registers the press of the button to register the event handler and determine what action takes place when button clicked self.Controls.Add(cBox) #############-------------\-------------############# #Create ok button btnOk = Button() #create a button control btnOk.Text = "Next" btnOk.Location = Point(uiWidth - ((btnOk.Width * 2) + spacing), uiHeight - (btnOk.Height + spacing)) btnOk.Anchor = (AnchorStyles.Bottom | AnchorStyles.Right) btnOk.Click += self.okButtonPressed #Register the event on the button bress to trigger the def okButtonPressed self.Controls.Add(btnOk) #Create Cancel Button btnCancel = Button() #btnCancel.Parent = self btnCancel.Text = "Cancel" btnCancel.Location = Point(uiWidth - (btnOk.Width + spacing), uiHeight - (btnOk.Height + spacing)) btnCancel.Anchor = (AnchorStyles.Bottom | AnchorStyles.Right) btnCancel.Click += self.CnlButtonPressed self.Controls.Add(btnCancel)
def draw(self, show=True, filename=None, update=False, usecoords=False): """Create a 2D depiction of the molecule. Optional parameters: show -- display on screen (default is True) filename -- write to file (default is None) update -- update the coordinates of the atoms to those determined by the structure diagram generator (default is False) usecoords -- don't calculate 2D coordinates, just use the current coordinates (default is False) Tkinter and Python Imaging Library are required for image display. """ if update: mol = self.Mol else: mol = self.Mol.clone() if not usecoords: mol.layout() if show or filename: renderer = IndigoRenderer(indigo) indigo.setOption("render-output-format", "png") indigo.setOption("render-margins", 10, 10) indigo.setOption("render-coloring", "True") indigo.setOption("render-image-size", 300, 300) indigo.setOption("render-background-color", "1.0, 1.0, 1.0") if self.title: indigo.setOption("render-comment", self.title) if filename: filedes = None else: filedes, filename = tempfile.mkstemp() renderer.renderToFile(mol, filename) if show: if sys.platform[:4] == "java": image = javax.imageio.ImageIO.read(java.io.File(filename)) frame = javax.swing.JFrame(visible=1) frame.getContentPane().add(javax.swing.JLabel(javax.swing.ImageIcon(image))) frame.setSize(300,300) frame.setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE) frame.show() elif sys.platform[:3] == "cli": if filedes: errormessage = ("It is only possible to show the molecule if you " "provide a filename. The reason for this is that I kept " "having problems when using temporary files.") raise RuntimeError(errormessage) form = Form() form.ClientSize = Size(300, 300) form.Text = self.title image = Image.FromFile(filename) box = PictureBox() box.SizeMode = PictureBoxSizeMode.StretchImage box.Image = image box.Dock = DockStyle.Fill form.Controls.Add(box) form.Show() Application.Run(form) else: if not PILtk: errormessage = ("Tkinter or Python Imaging " "Library not found, but is required for image " "display. See installation instructions for " "more information.") raise ImportError, errormessage root = tk.Tk() root.title((hasattr(self, "title") and self.title) or self.__str__().rstrip()) frame = tk.Frame(root, colormap="new", visual='truecolor').pack() image = PIL.open(filename) imagedata = PILtk.PhotoImage(image) label = tk.Label(frame, image=imagedata).pack() quitbutton = tk.Button(root, text="Close", command=root.destroy).pack(fill=tk.X) root.mainloop() if filedes: os.close(filedes) os.remove(filename)