2017-06-13 49 views
5

Trong trò chơi tôi đang thực hiện, tôi đang cố di chuyển cửa sổ xung quanh màn hình cho một trò chơi nhỏ (không hỏi) và tôi đã thử những gì tôi thấy chủ đề riêng và chỉ tìm thấy 1Tôi có thể di chuyển cửa sổ trò chơi pygame xung quanh màn hình (pygame)

x = 100 
y = 0 
import os 
os.environ['SDL_VIDEO_WINDOW_POS'] = "%d,%d" % (x,y) 

import pygame 
pygame.init() 
screen = pygame.display.set_mode((100,100)) 

# wait for a while to show the window. 
import time 
time.sleep(2) 

và nó không hoạt động (lưu ý tôi không có kinh nghiệm và siêu hiện mã như là một sở thích)

+0

'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

Trả lời

0

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() 
Các vấn đề liên quan