wxPython ve VTK ile bir uygulama oluşturuyorum. Ekranın solunda bir yapılandırma paneli (wx.Panel) ve sağda da bir wx.Panel'e dayanan bir VTK penceresi vardır. Paneller wxFrame'in boxsizer'ına yerleştirilir ve wxFormBuilder uygulamasında tanımlandığı şekilde orantılı boyutlandırma kullanılarak boyutlandırılır ve daha sonra bir XRC dosyası oluşturmak için kullanılır.VTK penceresi doldurmuyor wx.Panel
Ben sürekli doğru pencerenin VTK bölümünü boyutlandırma değil bazı Windows 7 makineleriyle çok özel bir sorun yaşıyorum - Yukarıdaki ekran VTK pencerenin etrafında beyaz sınır bakın. Ben bu VTK penceresini sabit 1280x720 yapmak için çalışıyorum - ve - ama pencere alt ve sağ doğrama bazı eleman ile bir boyutlandırma sorunu var. Ubuntu 10.04, XP veya Windows 7'nin bazı yapılarında çalıştırıldığında bu hata mevcut değil (çalışmakta olanlar ve henüz yapmayanlar hakkında benzersiz olanlardan emin değilim).
Bu hatayı yaşıyorsanız, ekranın beyaz kısımlarıyla etkileşimde bulunabilirim - tıklamalar VTK uygulayıcısı aracılığıyla doğru şekilde işleniyor, dolayısıyla VTK sahnesinin bir parçası.
Uygulama kurulumu, sağdaki VTK bölmesinin graphics_panel
olduğu aşağıdaki gibidir. Panel wxEXPAND
ile ayarlanmış ve başka hiçbir bayrak yok ve uygulağımdaki tüm öğeler otomatik olarak boyutlandırılacak (minimum, maksimum veya varsayılan boyut ayarlanmamış). Bunun tek istisnası, minimum genişlik ve yükseklik ayarına sahip olan bSizer1 (ana wxFrame boyutlandırıcı) 'dır (Bu doğru yol olup olmadığından emin değilim, ama işe yarıyor gibi görünüyor).
Ben wxFormBuilder gelen xRC oluşturmak ve sonra benim VTK sahne olarak aşağıda kurdunuz benim uygulamada, bu kullanın: Ne eleman giderilir çalışıyorlar
class MyScene(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent, style=wx.NO_BORDER)
#'parent' is main_frame (wx.Frame instance)
self._parent = parent
self.renderer = vtk.vtkRenderer()
# I create and add my VTK actors here (SNIPPED)
self._set_lighting()
self.widget = VTKWidget(self,-1) #VTKWidget is a wxVTKRenderWindowInteractor
self.widget.GetRenderWindow().AddRenderer(self.renderer)
self.widget.Enable(1)
self.widget.SetDoubleBuffered(True)
self.Bind(wx.EVT_SIZE, self.on_size)
ne boyuttadır MyScene
için on_size
işlevini kullanarak, ancak aşağıda hiçbir şey sorunumu giderir. numaralı telefon numarasında numaralı telefonlarda doğru şekilde çalışan ve hatalı çalışan sistemler beklendiği gibi çalışır. Bir düzgün bir sistemde
def on_size(self, evt):
print "---- MyScene on_size ----"
print "Widget size:", self.widget.GetSize() #wxVTKRenderWindowInteractor
print "Client size:", self.GetClientSize() #wxPanel.GetClientSize
print "Parent size:", self._parent.GetSize() #wxFrame
print "Renderer size:", self.renderer.GetSize() #vtkRenderer
self.renderer.Clear()
self.widget.SetSize((1280, 720))
renWin = self.widget.get_render_window()
renWin.SetSize(1280, 720)
self._parent.Layout()
self.renderer.Clear()
renWin.SetSize(1280, 720)
, çıkışı:
bu söz konusu ekran görüntüsünde olduğu gibi "kötü" Windows 7 sisteminde---- MyScene on_size ----
Widget size: (1280, 720)
Client size: (1296, 720)
Parent size: (1296, 720)
Renderer size: (1280, 720)
, çıkış benzer:
---- MyScene on_size ----
Widget size: (1280, 720)
Client size: (1234, 728)
Parent size: (1234, 728)
Renderer size: (1280, 720)
Özet olarak, hangi öğenin hatalı boyutlandığını bilmiyorum. VTK görüntüleyici boyutunun doğru olması, dosyaya bir VTK ekran görüntüsünün alınmasıyla, beyaz kırpma olmaksızın tüm sahneyi gösteren 1280x720 bir çıktı üretir ve yukarıda belirtildiği gibi, ekranın beyaz 'kırpılmış' kısımlarını kullanarak VTK sahnesiyle etkileşim kurabilirim.
Bu bir VTK veya WX öğesi doğru boyutlandırılmıyor mu? Herkes bu sorunu nasıl giderebileceğine dair bana bir ipucu verebilir mi? Hangi diğer elementlere bakmalıyım? Grafik panelimi 1280x720'ye kadar sert boyutlandırma ve yapılandırma panel boyutumun kendisinin uygun şekilde verilmesine nasıl izin vermeliyim?
Sorun, Python 2.7.5, VTK 5.10.1 ve wxpython 2.8 kullanırken yalnızca bazı Windows 7 makinelerinde oluşur.
WxWidgets örneklerinin biriyle sorunu yeniden yardımcı olacaktır. Çok daha fazla etkileşim olacak. – Tamer
@Tamer, bir VTK penceresi kullanmayı içeren bir wxWidgets örneği var mı? Boyutlandırma sorununun, şeylerin VTK tarafıyla WX tarafına göre daha fazla ilişkili olduğundan şüpheleniyorum. – jozzas
Sorunu gösteren minimal bir örnek oluşturabilir misiniz? – Fenikso