Как создать экран pygame, который начинается в левом верхнем углу монитора [duplicate]

Как упоминалось в ответе Андрея, если вы просто вызываете qualificationCheckCallback как обычный метод, вы получите только возвращаемое значение из одного из методов. По этой причине довольно много делегатов многоадресной передачи, у которых есть возвращаемое значение.

Если ваша цель - проверить, возвращает ли хотя бы один из методов, хранящихся в вашем делегате, false, вам нужно вызвать методы индивидуально. Вот один из способов сделать это с помощью метода Delegate.GetInvocationList () :

bool hasAtLeastOneFalse = false;
if (qualificationCheckCallback != null)
{
    foreach(var f in qualificationCheckCallback.GetInvocationList()
                                               .Cast>())
    {
        if (!f(employee, shift))
        {
            hasAtLeastOneFalse = true;
            // break; // If you don't care about invoking all delegates, you can choose to break here.
        }
    }
}

Console.WriteLine(hasAtLeastOneFalse);

Я не предполагаю, что это хорошая практика, но это можно сделать.

8
задан Paul Ronjak 28 April 2011 в 06:42
поделиться

2 ответа

Позиционирование окон не обрабатывается клиентским приложением. Он обрабатывается диспетчером Window (metacity и т. Д.).

В библиотеке SDL, на которой основан PyGame, есть несколько переменных среды , которые можно использовать, чтобы дать подсказки диспетчеру окна. Это подсказки, которые WM может игнорировать, но это лучшее, что вы можете сделать.

Примером могут служить комментарии к здесь .

5
ответ дан Noufal Ibrahim 18 August 2018 в 18:49
поделиться
  • 1
    Хорошо, я думаю, это отвечает на мой вопрос. Я делаю игру для финального проекта, и я планирую добавить в стартовое меню. Когда все закончится, я думаю, что игроку просто придется переместить экран, если понадобится. – Paul Ronjak 28 April 2011 в 07:06
  • 2
    Или вы можете сделать это в полноэкранном режиме. :) – Noufal Ibrahim 28 April 2011 в 07:27
import os  

os.environ['SDL_VIDEO_WINDOW_POS'] = str(position[0]) + "," + str(position[1])

в соответствии с http://pygame.org/wiki/FrequentlyAskedQuestions

Вы также можете просто центрировать экран с помощью

import pygame, os 

os.environ['SDL_VIDEO_CENTERED'] = '1'

Обратите внимание, что это необходимо сделать, прежде чем инициализировать pygame в основном цикле. Я делаю это сразу после импорта os, например. И поскольку они не являются частью pygame, вы, вероятно, можете использовать его в другом месте, хотя такие вещи, как gtk и wxpython, предоставляют свои собственные механизмы.

15
ответ дан Alan 18 August 2018 в 18:49
поделиться
  • 1
    Для первого кода он говорит, что «позиция» не определена, а для второго кода он просто делает все, что я могу сказать. – Paul Ronjak 28 April 2011 в 07:00
  • 2
    Конечно. позиция [0] и позиция [1] являются заполнителями, указывающими, что ожидается там; пользовательская переменная какого-либо типа. И как сказал Нуфаль Ибрагим, если ваш оконный менеджер отказывается сотрудничать, он просто не будет работать. В моем случае он отлично разбирается под gnome с помощью compiz. – Alan 28 April 2011 в 07:14
  • 3
    SDL_VIDEO_CENTERED не работает. – e-info128 19 April 2017 в 15:58
Другие вопросы по тегам:

Похожие вопросы: