Ich versuche, die QWorkspace-Klasse mit meinen eigenen Kaskaden- und Kacheldefinitionen zu überlasten, aber wenn ich versuche, die .move-Funktion zu verwenden, verschiebt sie das innere Widget relativ zum Unterfenster, anstatt das Unterfenster relativ zu verschieben zum Arbeitsbereich. HierQWorkspace-Kaskade verwenden
ist der Code Ich verwende:
class MdiArea(QWorkspace):
def tile(self):
if len(self.windowList()) < 2:
return
def cascade(self):
if len(self.windowList()) < 2:
return
windows = []
for window in self.windowList():
windows.append((window.width(), window.height(), window))
windows.sort()
#
x = 0
y = 0
endX = self.width() - min(windows[-1][0], self.width())
endY = self.height() - min(windows[-1][1], self.height())
for i in range(len(windows)):
x = i * 10
y = i * 10
width, height, window = windows[i]
window.move(x, y)
window.raise_()
Hier ist der Code, der schließlich für mich gearbeitet (man beachte die 'parent()' zusätzlich insbesondere): Klasse MdiArea (QWorkspace): def Fliese (self): Druck self.width() wenn len (self.windowList()) < 2: return i = 0 für Fenster in self.windowList(): x = i * window.parent() .width() y = 5 Wind ow.parent(). bewegen (x, y) window.parent(). raise_()
i = i + 1
def cascade(self):
if len(self.windowList()) < 2:
return
i=0
for window in self.windowList():
x = i * 15
y = i * 30
window.parent().move(x, y)
window.parent().raise_()
i=i+1
Das habe ich vermisst. Ich aktualisiere das Programm, daher wird es zu zeitaufwendig sein, den gesamten QWorkspace-Code zu entfernen und QMdiArea einzubauen. – Stephen