def displayMetaDataSubWindow(self, tableTitle, dataset): """ Creates a subwindow that displays a DICOM image's metadata. """ try: logger.info('ViewMetaData.displayMetaDataSubWindow called.') title = "DICOM Image Metadata" widget = QWidget() widget.setLayout(QVBoxLayout()) metaDataSubWindow = QMdiSubWindow(self) metaDataSubWindow.setAttribute(Qt.WA_DeleteOnClose) metaDataSubWindow.setWidget(widget) metaDataSubWindow.setObjectName("metaData_Window") metaDataSubWindow.setWindowTitle(title) height, width = self.getMDIAreaDimensions() metaDataSubWindow.setGeometry(width * 0.4,0,width*0.6,height) lblImageName = QLabel('<H4>' + tableTitle + '</H4>') widget.layout().addWidget(lblImageName) DICOM_Metadata_Table_View = buildTableView(self, dataset) widget.layout().addWidget(DICOM_Metadata_Table_View) self.mdiArea.addSubWindow(metaDataSubWindow) metaDataSubWindow.show() except Exception as e: print('Error in : ViewMetaData.displayMetaDataSubWindow' + str(e)) logger.error('Error in : ViewMetaData.displayMetaDataSubWindow' + str(e))
def __add__(self, widget): """ Show widget on mdi area. If widget does not have a subwindow assigned, create a new subwindow without enabling the WA_DeleteOnClose event. This will allow subwindow to be hidden instead of destroyed. Otherwise, the closeEvent.accept() will cause the "Internal c++ Object Already Deleted" problem. If widget already has a subwindow, just show them (both the subwindow and the widget inside)! :param widget: :return: """ if not hasattr(widget, 'subwindow'): subwindow = QMdiSubWindow() subwindow.setWidget(widget) rect = widget.geometry() # DO NOT SET ATTRIBUTE WA_DeleteOnClose because we want window not to be destroyed widget.subwindow = self.addSubWindow(subwindow) subwindow.setGeometry(rect) widget.subwindow.show() widget.show() widget.closeEvent = lambda x: self._subWindowClosed(x) widget.setFocus() logger.debug("Sub window opened. MDI area sub windows: %s", self.subWindowList()) return self
def new_windows(self): sub = QMdiSubWindow() sub.setWidget(QTextEdit()) sub.setWindowTitle("New Article") sub.setGeometry(100, 100, 600, 320) self.mdi.addSubWindow(sub) sub.show()
class MainWindow(QMainWindow): def __init__(self): super().__init__() self.title = 'Show - Skill Tree' self.height = 400 self.width = 400 self.mdi = QMdiArea() self.setCentralWidget(self.mdi) self.skill_labels = [] self.skill_window = QMdiSubWindow(self) self.skill_window.hide() self.initUI() def initUI(self): self.setWindowTitle(self.title) self.setGeometry(400, 400, self.height, self.width) self.create_skill_labels(self.skill_window, rage, shatter, destroy, kill) switch_on_off = QPushButton('Show/Hide', self.skill_window) switch_on_off.move(150, 100) switch_on_off.clicked.connect(self.show_hide) self.skill_window.setGeometry(0, 0, self.height, self.width) self.skill_window.setWindowFlags(self.skill_window.windowFlags() | Qt.FramelessWindowHint) self.skill_window.show() self.show() def show_hide(self): for label in self.skill_labels: # Labels could have their own methods to hide/show for convenience if label.visible: label.new_label.hide() label.visible = False else: label.new_label.show() label.visible = True def create_skill_labels(*args): window = args[0] skill_list = [x for x in args[2:]] label_x = 100 label_y = 100 for skill in skill_list: skill_label = NewLabel(window, skill.name, skill.image, label_x, label_y) label_y += 50 window.skill_labels.append(skill_label)
def showWindow(self): # 创建一个新的窗口 subwindow = QMdiSubWindow() # 为子窗口添加组件 self.browser = QWebEngineView() subwindow.setGeometry(0, 0, 1200, 600) # 加载外部的web界面 self.browser.load(QUrl('http://sso.lzad.cc/#/')) subwindow.setWindowTitle('落地页') subwindow.setWidget(self.browser) # 将字窗口添加到区域QmdiArea self.area.addSubWindow(subwindow) # 子窗口显示 subwindow.show()
def setUpGraphicsViewSubWindow(self): """ This function creates a subwindow with a vertical layout & a missing image label. Input Parameters **************** self - an object reference to the WEASEL interface. Output Parameters ***************** layout - PyQt5 QVBoxLayout vertical layout box lblImageMissing - Label displaying the text 'Missing Image'. Hidden until WEASEL tries to display a missing image subWindow - An QMdiSubWindow subwindow """ try: logger.info("DisplayImageDrawRIO.setUpGraphicsViewSubWindow called") subWindow = QMdiSubWindow(self) subWindow.setObjectName = 'image_viewer' subWindow.setWindowFlags(Qt.CustomizeWindowHint | Qt.WindowCloseButtonHint | Qt.WindowMinimizeButtonHint) height, width = self.getMDIAreaDimensions() subWindow.setGeometry(0, 0, width * 0.6, height) self.mdiArea.addSubWindow(subWindow) layout = QVBoxLayout() widget = QWidget() widget.setLayout(layout) subWindow.setWidget(widget) lblImageMissing = QLabel("<h4>Image Missing</h4>") lblImageMissing.hide() layout.addWidget(lblImageMissing) hbox = QHBoxLayout() hbox.setContentsMargins(0, 0, 0, 0) layout.addLayout(hbox) subWindow.show() return hbox, layout, lblImageMissing, subWindow except Exception as e: print('Error in DisplayImageDrawRIO.setUpGraphicsViewSubWindow: ' + str(e)) logger.error( 'Error in DisplayImageDrawRIO.setUpGraphicsViewSubWindow: ' + str(e))
def __init__(self): super(LitterariusHome, self).__init__() ui = Litterarius_ui.Ui_Dialog() ui.setupUi(self) ui.btnManter.clicked.connect(self.clickedManter) janelaManter = QMdiSubWindow() manter = Manter() movimentacao = MenuMovimentacao() janelaManter.setWidget(movimentacao) janelaManter.setGeometry(0, 0, 780, 500) ui.mdiArea.addSubWindow(janelaManter) # janelaManter.show () self.show()
def createCANTableSubWindow(self): self.can_table = QTableWidget(50, 9) sub = QMdiSubWindow() sub.setWidget(self.can_table) sub.setWindowTitle("Raw CAN Frames") self.mdi.addSubWindow(sub) sub.setGeometry(0, 0, 400, 800) self.can_table.verticalHeader().hide() self.can_table.setHorizontalHeaderItem(0, QTableWidgetItem("ID")) self.can_table.setColumnWidth(0, 10) for i in range(1, 9): item = QTableWidgetItem(str(i - 1)) self.can_table.setHorizontalHeaderItem(i, item) self.can_table.setColumnWidth(i, 10) sub.show()
def loadDBCFile(self, file_path): dbc_win = DBCRecvWindow(file_path, self) sub = QMdiSubWindow() sub.setWidget(dbc_win) sub.setGeometry(100, 100, 500, 500) self.mdi.addSubWindow(sub) sub.show() dbc_send_win = DBCSendWindow(file_path, self) sub2 = QMdiSubWindow() sub2.setWidget(dbc_send_win) sub2.setGeometry(100, 100, 500, 500) self.mdi.addSubWindow(sub2) sub2.show() self.config["RecentDBCs"][os.path.basename(file_path)] = file_path self.recentDBCFiles[os.path.basename(file_path)] = file_path self.dbc_path = os.path.split(file_path)[0] self.saveConfig()
class Example(QMainWindow): def __init__(self, parent=parent): super().__init__(self, parent) screen_resolution = app.desktop().screenGeometry() width, height = screen_resolution.width(), screen_resolution.height() self.initUI() def initUI(self): self.statusBar().showMessage('Ready') self.btn = QPushButton("Button", self) self.btn.setToolTip("Test Button") self.btn.setIcon(QIcon("/home/hsa/PycharmProjects/test12/home-6x.png")) #btn.setIconSize(QSize(24,24)) self.btn.move(50, 50) self.btn.clicked.connect(self.on_clicked) self.setGeometry(0, 0, width, height) self.setWindowTitle('MainWindow') #self.mysubwindow() def mysubwindow(self): self.mdi = QMdiArea() self.setCentralWidget(self.mdi) self.sub = QMdiSubWindow() self.sub.setGeometry(10, 10, width - 30, height - 100) self.tabbar = QTabBar() self.sub.setWidget(self.tabbar) self.tabbar.addTab("Test1") self.tabbar.addTab("Test2") self.sub.setWindowTitle("subwindow") self.mdi.addSubWindow(self.sub) self.sub.show() @pyqtSlot() def on_clicked(self): print("Button clicked")