Python Sådan holder du MessageboxW oven på alle andre vinduer?

Indlæg af Hanne Mølgaard Plasc

Problem



Kontekst:


Jeg har et lille script, der advarer brugeren af ​​en begivenhed ved at oprette en meddelelsesboks ved hjælp af Windows i den indbyggede meddelelsesboks (Ref: MSDN MessageBox), som importeres ved hjælp af ctypes. Dette script er til Windows OS. [9]


Problem:


I øjeblikket vises meddelelsesboksen oven på alle andre vinduer, men fordi det er sådan et lille vindue, kan en bruger nemt klikke på et andet vindue, der kunne skjule meddelelsesboksen.


Hvad jeg vil


Jeg vil gerne holde meddelelsesboksen altid oven på andre vinduer. Hvis dette ikke kan gøres, er der alternativt en måde at øge dimensionerne af meddelelsesboksen på?


Eksempelkode:


import ctypes

ctypes.windll.user32.MessageBoxW(0, text, title, 0x00010000)

Bedste reference


import ctypes

text = 'Using MB\_SYSTEMMODAL'
title = 'Some Title'

ctypes.windll.user32.MessageBoxW(0, text, title, 0x1000)


MB\_SYSTEMMODAL (0x1000) har stilen WS\_EX\_TOPMOST (0x40000).


Funktionen MessageBoxEx ser ud til at fungere godt ved brug af bare
stilen WS\_EX\_TOPMOST (0x40000).


import ctypes

text = 'Using WS\_EX\_TOPMOST'
title = 'Some Title'

ctypes.windll.user32.MessageBoxExW(0, text, title, 0x40000)


MessageBox-funktionen har ingen parametre for at ændre størrelse. Måske
et alternativ som tkinter eller en anden gui toolkit kan være i stand til
at ændre messagebox størrelse (selv om det måske ikke, hvis det bare er en wrapper
for MessageBoxW), eller du kan måske oprette et brugerdefineret vindue til brug.


Se MSDN MessageBox-funktion for værdier, der skal bruges. [10]


Se også MSDN MessageBoxEx-funktion. [11]