self.showNormal () отображается во весь экран при открытии нового окна QWidget в PyQT5 - PullRequest
0 голосов
/ 02 мая 2020

У меня есть главное окно в полноэкранном режиме, когда пользователь нажимает кнопку в этом окне, я хочу открыть другое окно поверх основного. Но то, что я получаю, когда пишу self.showNormal() (чтобы показать всплывающее окно), это еще одно полноэкранное окно. Я также попробовал self.show(), так что и это, и self.showNormal() приводят к тому же поведению, которое вы получите от self.showFullScreen()

Вот код для нового окна, которое я хочу отобразить:

import pyqtgraph as pg
from PyQt5 import Qt, uic
class profileWindow(Qt.QWidget):
    def __init__ (self, profileName, mappedModels):
        Qt.QWidget.__init__(self)
        uic.loadUi('profile.ui', self)
        self.showNormal() # self.show() behaves similarly by opening a        maximized window

    def exitWindow(self): 
        self.close()

ОБНОВЛЕНИЕ: , поэтому я попытался показать главный экран как оконный с self.showMaximized() вместо self.showFullScreen(), и все работает, как и ожидалось, при открытии нового окна, оно всплывающее окно, как я хочу. Так что проблема возникает только при отображении главного окна в полноэкранном режиме.

Что я получаю: Maximized

Что я хочу: What_i_want

profile.ui xml:

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>Form</class>
 <widget class="QWidget" name="Form">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>330</width>
    <height>689</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Form</string>
  </property>
  <widget class="QLabel" name="profilePic">
   <property name="geometry">
    <rect>
     <x>0</x>
     <y>0</y>
     <width>331</width>
     <height>301</height>
    </rect>
   </property>
   <property name="text">
    <string/>
   </property>
  </widget>
  <widget class="QLabel" name="profileName">
   <property name="geometry">
    <rect>
     <x>135</x>
     <y>310</y>
     <width>60</width>
     <height>16</height>
    </rect>
   </property>
   <property name="text">
    <string/>
   </property>
  </widget>
  <widget class="QWidget" name="verticalLayoutWidget">
   <property name="geometry">
    <rect>
     <x>0</x>
     <y>340</y>
     <width>331</width>
     <height>301</height>
    </rect>
   </property>
   <layout class="QVBoxLayout" name="resultGraph"/>
  </widget>
  <widget class="QPushButton" name="doneBtn">
   <property name="geometry">
    <rect>
     <x>115</x>
     <y>650</y>
     <width>101</width>
     <height>32</height>
    </rect>
   </property>
   <property name="text">
    <string>Done</string>
   </property>
  </widget>
 </widget>
 <resources/>
 <connections/>
</ui>

на данный момент я использую действительно хакерский способ, которым я действительно не хочу пользоваться:

self.showMinimized()
time.sleep(1/2)
self.showNormal()

... и я знаю, я также съеживаюсь, когда читаю эти 3 строки.

...