Хобрук: Ваш путь к мастерству в программировании

wxpython: установить цвет приложения (свойства по умолчанию)

Я хочу изменить цвет для всего моего приложения pythonwx. Я обнаружил, что используемые в настоящее время цвета отмечены в wx.Frame.DefaultAttributes.colBg соответственно.colFg. Проверил краской, что это действительно используемые цвета. Теперь есть метод wx.Frame.GetDefaultAttributes(), но не метод wx.Frame.SetDefaultAttributes(). Но мне все еще нужно изменить цвет, и я не думаю, что установка каждого элемента управления вручную является желаемым решением. Я старался:

frame.DefaultProperties = customProperties

а также

frame.DefaultProperties.colBg = customColor

но оба выдают AttributeError ("невозможно установить атрибут"). Любая помощь приветствуется.

24.02.2020

Ответы:


1

Свойства по умолчанию, вероятно, определены в любой теме, которую вы установили для рабочего стола. Я не верю, что есть способ переопределить их из wxpython.

Самый простой способ, который я нашел для установки цветовой схемы по умолчанию, — это установить цвета для каждого из дочерних элементов в объекте, таком как панель.

В следующем коде продолжайте нажимать кнопку Encrypt, чтобы увидеть результаты.

import wx
from random import randrange

class CipherTexter(wx.Frame):
    def __init__(self, parent, title):
        wx.Frame.__init__(self, parent, title=title,  size=(1000, 600))
        self.panel = wx.Panel(self)
        cipherText = wx.StaticText(self.panel, label="Cipher Texter ", pos=(20, 30))
        encryptorText = wx.StaticText(self.panel, label="Encryptor ", pos=(20, 70))
        decryptorText = wx.StaticText(self.panel, label="Decryptor ", pos=(20, 100))
        self.cipher = wx.TextCtrl(self.panel, -1, style=wx.TE_MULTILINE, size=(400,400), pos=(400, 30))
        self.encryptor = wx.TextCtrl(self.panel, -1, size=(100,30), pos=(200, 70))
        self.decryptor = wx.TextCtrl(self.panel, -1, size=(100,30), pos=(200, 100))
        self.encrypt = wx.Button(self.panel, -1, "Encrypt", pos=(20, 140))
        self.decrypt = wx.Button(self.panel, -1, "Decrypt", pos=(20, 180))
        self.panel.SetBackgroundColour('white')
        self.encrypt.Bind(wx.EVT_BUTTON, self.encryptNow)
        self.decrypt.Bind(wx.EVT_BUTTON, self.decryptNow)
        self.Show()

    def AColour(self):
        red = randrange(0,255)
        green = randrange(0,255)
        blue = randrange(0,255)
        x = wx.Colour(red,green,blue)
        return x

    def encryptNow(self, event):
        cfg_colour = self.AColour()
        txt_colour = self.AColour()
        children = self.panel.GetChildren()
        for child in children:
            child.SetBackgroundColour(cfg_colour)
            child.SetForegroundColour(txt_colour)
        print(cfg_colour)

    def decryptNow(self, event):
        pass

app = wx.App(False)
frame = CipherTexter(None, "The SS Cipher")
app.MainLoop()

введите здесь описание изображения введите здесь описание изображения

24.02.2020
  • Спасибо. Просмотр детей и раскрашивание каждого из них может быть лучшим методом. К сожалению, с помощью этого метода вы не можете установить определенные элементы управления, такие как ToggleButton (установка цвета фона изменяет только небольшой край вокруг кнопки). 27.02.2020
  • Это было бы ограничением виджета или темы рабочего стола. Установка цвета фона дочернего виджета идентична установке его для самого виджета по отдельности. Это ведь тот же виджет. 27.02.2020
  • Новые материалы

    5 проектов на Python, которые нужно создать прямо сейчас!
    Добро пожаловать! Python — один из моих любимых языков программирования. Если вы новичок в этом языке, перейдите по ссылке ниже, чтобы узнать о нем больше:

    Dall-E 2: недавние исследования показывают недостатки в искусстве, созданном искусственным интеллектом
    DALL-E 2 — это всеобщее внимание в индустрии искусственного интеллекта. Люди в списке ожидания пытаются заполучить продукт. Что это означает для развития креативной индустрии? О применении ИИ в..

    «Очень простой» эволюционный подход к обучению с подкреплением
    В прошлом семестре я посетил лекцию по обучению с подкреплением (RL) в моем университете. Честно говоря, я присоединился к нему официально, но я редко ходил на лекции, потому что в целом я нахожу..

    Освоение информационного поиска: создание интеллектуальных поисковых систем (глава 1)
    Глава 1. Поиск по ключевым словам: основы информационного поиска Справочная глава: «Оценка моделей поиска информации: подробное руководство по показателям производительности » Глава 1: «Поиск..

    Фишинг — Упаковано и зашифровано
    Будучи старшим ИТ-специалистом в небольшой фирме, я могу делать много разных вещей. Одна из этих вещей: специалист по кибербезопасности. Мне нравится это делать, потому что в настоящее время я..

    ВЫ РЕГРЕСС ЭТО?
    Чтобы понять, когда использовать регрессионный анализ, мы должны сначала понять, что именно он делает. Вот простой ответ, который появляется, когда вы используете Google: Регрессионный..

    Не зря же это называют интеллектом
    Стек — C#, Oracle Опыт — 4 года Работа — Разведывательный корпус Мне пора служить Может быть, я немного приукрашиваю себя, но там, где я живу, есть обязательная военная служба на 3..