Окно не центрировано на экранеPython

Программы на Python
Anonymous
Окно не центрировано на экране

Сообщение Anonymous »

У меня проблема в позиционировании окна входа в центр моего экрана. < /p>
Это мой код: < /p>
from customtkinter import *
from PIL import Image
from tkinter import messagebox
from views.registration import RegistrationWindow
from views.homepage import HomepageWindow
from views.admin import AdminWindow
from models.database import authenticate_user

class LoginApp(CTk):
def __init__(self):
super().__init__()
self.title("Login")
self.setup_window()
self.create_widgets()

def setup_window(self):
height = 430
width = 530

x = (self.winfo_screenwidth() // 2) - (width // 2)
y = (self.winfo_screenheight() // 2) - (height // 2)

self.geometry(f"{width}x{height}+{x}+{y}")

def create_widgets(self):
image_path = "images/prdp_logo.png"
image = CTkImage(dark_image=Image.open(image_path), size=(150, 150))
image_label = CTkLabel(master=self, image=image, text="")
image_label.place(relx=0.5, rely=0.3, anchor="center")

self.username_entry = CTkEntry(master=self, placeholder_text="Username", font=("Arial", 12), text_color="white", width=300)
self.username_entry.place(relx=0.5, rely=0.5, anchor="center")

self.password_entry = CTkEntry(master=self, placeholder_text="Password", font=("Arial", 12), text_color="white", width=300, show="*")
self.password_entry.place(relx=0.5, rely=0.6, anchor="center")

CTkButton(master=self, text="LOGIN", font=("Arial", 12), text_color="white", width=200, command=self.login).place(relx=0.5, rely=0.7, anchor="center")
CTkButton(master=self, text="REGISTER", font=("Arial", 12), text_color="white", width=200, command=self.open_registration_window).place(relx=0.5, rely=0.8, anchor="center")

def open_registration_window(self):
RegistrationWindow(self)

def login(self):
username = self.username_entry.get().strip()
password = self.password_entry.get().strip()

if not username or not password:
messagebox.showerror("Error", "Please enter your username and password!")
return

result = authenticate_user(username, password)
if result:
fullname, role = result
self.withdraw()
if role == "ADMIN":
admin_panel = AdminWindow(fullname, self)
admin_panel.mainloop()
else:
homepage = HomepageWindow(fullname, self)
homepage.mainloop()
else:
messagebox.showerror("Error", "Invalid username or password!")
< /code>
Я придумал идею при изменении шкалы в настройках дисплея. Моя текущая шкала составляет 125%, что рекомендуется. Затем я попытался изменить его на 100%, и это сработало, окно теперь расположено в центре моего экрана. Но если я изменю его на 125%, это возвращается к той же проблеме, не была сосредоточена снова. Я попытался тестировать другие приложения в 125% шкале, и они сосредоточены на моем экране после открытия. Я не знаю, почему мое приложение не делает то же самое.

Подробнее здесь: https://stackoverflow.com/questions/793 ... the-screen

Вернуться в «Python»