Kiểm tra các mã dưới đây. Tôi kết hợp hai câu trả lời khác nhau, nhưng có vẻ như sẽ khá khó khăn nếu không sử dụng Tkinter. Rất may là tôi không nghĩ rằng Tkinter sẽ cản trở ứng dụng của bạn quá nhiều (dường như hoạt động khá dễ dàng ở đây).
# Moving a pygame window with Tkinter.
# Used code from:
# https://stackoverflow.com/questions/8584272/using-pygame-features-in-tkinter
# https://stackoverflow.com/questions/31797063/how-to-move-the-entire-window-to-a-place-on-the-screen-tkinter-python3
import tkinter as tk
import os, random
w, h = 400, 500
# Tkinter Stuffs
root = tk.Tk()
embed = tk.Frame(root, width=w, height=h)
embed.pack()
os.environ['SDL_WINDOWID'] = str(embed.winfo_id())
os.environ['SDL_VIDEODRIVER'] = 'windib' # This was needed to work on my windows machine.
root.update()
# Pygame Stuffs
import pygame
pygame.display.init()
screen = pygame.display.set_mode((w, h))
# This just gets the size of your screen (assuming the screen isn't affected by display scaling).
screen_full_size = pygame.display.list_modes()[0]
# Basic Pygame loop
done = False
while not done:
for event in pygame.event.get():
if event.type == pygame.QUIT:
done = True
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
done = True
if event.key == pygame.K_SPACE:
# Press space to move the window to a random location.
r_w = random.randint(0, screen_full_size[0])
r_h = random.randint(0, screen_full_size[1])
root.geometry("+"+str(r_w)+"+"+str(r_h))
# Set to green just so we know when it is finished loading.
screen.fill((0, 220, 0))
pygame.display.flip()
root.update()
pygame.quit()
root.destroy()
Nguồn
2017-06-15 07:55:05
'os.environ ['SDL_VIDEO_WINDOW_POS']' chỉ đặt nơi cửa sổ bắt đầu. Nó không di chuyển một cửa sổ đã được tạo ra. Trong mã bạn đã cung cấp, cửa sổ sẽ xuất hiện với góc trên cùng bên trái tại (100,0). Phải không? – pydude