一般画面ではなくアクティブ画面の中央にウィンドウを配置するにはどうすればよいですか?このコードは、アクティブな画面ではなく、一般的な画面の中央にウィンドウを移動します。
import sys
from PyQt4 import QtGui
class MainWindow(QtGui.QWidget):
def __init__(self):
super(MainWindow, self).__init__()
self.initUI()
def initUI(self):
self.resize(640, 480)
self.setWindowTitle('Backlight management')
self.center()
self.show()
def center(self):
frameGm = self.frameGeometry()
centerPoint = QtGui.QDesktopWidget().availableGeometry().center()
frameGm.moveCenter(centerPoint)
self.move(frameGm.topLeft())
def main():
app = QtGui.QApplication(sys.argv)
mainWindow = MainWindow()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
削除した場合 self.center() から initUI() 次に、アクティブな画面で0x0にウィンドウが開きます。アクティブな画面でウィンドウを開き、このウィンドウをこの画面の中央に移動する必要があります。サンスク!
center
メソッドを次のように変更します。
def center(self):
frameGm = self.frameGeometry()
screen = QtGui.QApplication.desktop().screenNumber(QtGui.QApplication.desktop().cursor().pos())
centerPoint = QtGui.QApplication.desktop().screenGeometry(screen).center()
frameGm.moveCenter(centerPoint)
self.move(frameGm.topLeft())
この関数は、マウスポイントの位置に基づいています。 screenNumber 関数を使用して、マウスが現在アクティブになっている画面を判別します。次に、そのモニターの screenGeometry とその画面の中心点を見つけます。この方法を使用すると、モニターの解像度が異なっていても、ウィンドウを画面の中央に配置できるはずです。
PyQt5ユーザーのための1つの修正:
import PyQt5
def center(self):
frameGm = self.frameGeometry()
screen = PyQt5.QtWidgets.QApplication.desktop().screenNumber(PyQt5.QtWidgets.QApplication.desktop().cursor().pos())
centerPoint = PyQt5.QtWidgets.QApplication.desktop().screenGeometry(screen).center()
frameGm.moveCenter(centerPoint)
self.move(frameGm.topLeft())
これは_PyQt4
_および_PyQt5
_用です。
1] self.setGeometry(0, 0, 700, 500) #My window resolution 700x500
2]私のコンピューターの解像度は_1920x1080
_で、ウィンドウの解像度は_700x500
_になりました。
3] _1920/2 = 960
_。および_1080/2 = 480
_。これは、ウィンドウの左上隅の中央に配置されます。
4]センターウィンドウが欲しい。したがって、これが必要です:960-ウィンドウ幅/ 2および480-ウィンドウ高さ/ 2。
5]返信は_480,240
_です。コマンドはself.setGeometry(480, 240, 700, 500)
になりました
要約:コンピュータの解像度/ 2-ウィンドウの解像度/ 2から_WinX, WinY
_。