Note that there are some explanatory texts on larger screens.

plurals
  1. POWx Python image viewer - atfer opening an image file menu is too tight
    primarykey
    data
    text
    <p>I use Python 2.7 and wx on Ubuntu 12.04.</p> <p>I wrote a tiny, tiny image viewer in Python using wx. Everything works just great but I have problems with size of my app's main window. </p> <p>When I open an ordinary-size picture, I see:</p> <p><img src="https://i.stack.imgur.com/pxds5.png" alt="enter image description here"></p> <p>which is just fine.</p> <p>But when I open another file, lets say sth like this (an image of a biiiiig graph):</p> <p><img src="https://i.stack.imgur.com/60igh.png" alt="enter image description here"></p> <p>my app window has a wrong width, I mean take a look at menu its .. too tight and you dont even see an "Edit" option properly.</p> <p>How to fix it? I just started with wx in Python, so please, be patient :)</p> <p>My code:</p> <pre><code># -*- coding: utf-8 -*- #!/usr/bin/env python import wx import os class MyGUIApp(wx.App): def __init__(self, redirect=False, filename=None): wx.App.__init__(self, redirect, filename) self.frame = wx.Frame(None, title='MyGUIApp v0.2') self.panel = wx.Panel(self.frame) self.filename = '' self.dirname = '' width, height = wx.DisplaySize() self.pictureMaxSize = 500 img = wx.EmptyImage(self.pictureMaxSize, self.pictureMaxSize) self.imageCtrl = wx.StaticBitmap(self.panel, wx.ID_ANY, wx.BitmapFromImage(img)) self.mainSizer = wx.BoxSizer(wx.VERTICAL) self.mainSizer.Add(self.imageCtrl, 0, wx.ALL|wx.CENTER, 5) self.panel.SetSizer(self.mainSizer) self.mainSizer.Fit(self.frame) self.createMenus() self.connectItemsWithEvents() self.createKeyboardShortcuts() self.frame.SetMenuBar(self.menuBar) self.frame.Show() def connectItemsWithEvents(self) : self.Bind(wx.EVT_MENU, self.openEvent, self.openItem) self.Bind(wx.EVT_MENU, self.clearEvent, self.clearItem) def createKeyboardShortcuts(self) : self.accel_tbl = wx.AcceleratorTable([(wx.ACCEL_CTRL, ord('C'), self.clearItem.GetId()), (wx.ACCEL_CTRL, ord('O'), self.openItem.GetId()), ]) self.frame.SetAcceleratorTable(self.accel_tbl) def createMenus(self) : self.menuBar = wx.MenuBar() self.menuFile = wx.Menu() self.menuBar.Append(self.menuFile, '&amp;File') self.openItem = wx.MenuItem(self.menuFile, wx.NewId(), u'&amp;open ...\tCTRL+O') #self.openItem.SetBitmap(wx.Bitmap('images/document-open.png')) self.menuFile.AppendItem(self.openItem) self.menuEdit = wx.Menu() self.menuBar.Append(self.menuEdit, '&amp;Edit') self.clearItem = wx.MenuItem(self.menuEdit, wx.NewId(), '&amp;Clear\tCTRL+C') #self.clearItem.SetBitmap(wx.Bitmap('images/clear.png')) self.menuEdit.AppendItem(self.clearItem) def openEvent(self, event) : openDialog = wx.FileDialog(self.frame, u'Open file', "File", "", "*.*", wx.OPEN) if openDialog.ShowModal() == wx.ID_OK : self.filename = openDialog.GetFilename() self.dirname = openDialog.GetDirectory() self.draw(os.path.join(self.dirname, self.filename)) openDialog.Destroy() def clearEvent(self, event) : img = wx.EmptyImage(self.pictureMaxSize, self.pictureMaxSize) self.imageCtrl = wx.StaticBitmap(self.panel, wx.ID_ANY, wx.BitmapFromImage(img)) self.imageCtrl.SetBitmap(wx.BitmapFromImage(img)) self.frame.SetSize((self.pictureMaxSize, self.pictureMaxSize)) self.filename = '' self.dirname = '' def draw(self, filename) : image_name = filename img = wx.Image(filename, wx.BITMAP_TYPE_ANY) W = img.GetWidth() H = img.GetHeight() if W &gt; H: NewW = self.pictureMaxSize NewH = self.pictureMaxSize * H / W else: NewH = self.pictureMaxSize NewW = self.pictureMaxSize * W / H img = img.Scale(NewW,NewH) self.imageCtrl.SetBitmap(wx.BitmapFromImage(img)) self.panel.Refresh() self.mainSizer.Fit(self.frame) if __name__ == '__main__': app = MyGUIApp() app.MainLoop() </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload