我正在為我和一個朋友制作的病毒模擬的用戶界面作業,我在改變用戶界面的背景顏色方面非常糾結。我從一個演示專案中提取了大部分代碼,因為我不知道如何用pysimplegui實作matplotlib,所以有些東西我并不完全了解,但通常在pysimplegui中,改變主背景顏色只需sg.theme="color,但這次卻不行。如果有任何幫助,我們將不勝感激,謝謝
import PySimpleGUI as sg
import numpy as np
import tkinter
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2Tk
def draw_figure(canvas, fig)。
if canvas.children。
for child in canvas.winfo_children()。
child.destroy()
figure_canvas_agg = FigureCanvasTkAgg(fig, master=canvas)
figure_canvas_agg.draw()
figure_canvas_agg.get_tk_widget().pack(side='right'/span>, fill='both'/span>, expand=1)
# ------------------------------- PySimpleGUI代碼。
layout = [...
[sg.Text("人口規模:"), sg.Input(key="-POPULATIONSIZE-")]。
[sg.Text("Duration: "), sg.Input(key="-DURATION-") ],
[sg.Text("R Number: "), sg.Input(key="-RNUMBER-") ],
[sg.Text("Starting Infections: "), sg.Input(key="-STARTINGINFECTIONS-") ] 。
[sg.B('OK'), sg.B('Exit') ] 。
[sg.Canvas(key='controls_cv')]。
[sg.T('Figure:')]。
[sg.Column(
layout=[
[sg.Canvas(key='fig_cv',
size=(400 * 2, 400)
)]
],
background_color='#DAE0E6'。
pad=(0, 0)
)],
]
window = sg.Window('Virus Simulation', layout, )
while True:
event, values = window.read()
print(event, values)
if event in(sg.WIN_CLOSED, 'Exit')。
break。
elif事件是 'OK'。
# ------------------------------- 在這里粘貼你的MATPLOTLIB代碼。
plt.figure(1)
fig = plt.gcf()
DPI = fig.get_dpi()
# ------------------------------- 你必須玩弄這個尺寸,以減少滑鼠懸停在圖上時的移動誤差,它接近畫布尺寸。
畫面中的人物。 set_size_inches(404 * 2 / float(DPI), 404 / float(DPI))
# -------------------------------
x = list(range(1, 100)
y = list(range(1, 100)
plt.plot(x, y, color="r"/span>)
plt.title('病毒感染資料')
plt.xlabel('Time in Days')
plt.ylabel('感染情況')
plt.grid()
# ------------------------------- 而不是plt.show()
draw_figure(window['fig_cv'].TKCanvas, fig,)
window.close()
uj5u.com熱心網友回復:
你可以通過在layout下面的引數中指定一個Hex顏色代碼來改變背景顏色:
background_color='#DAE0E6'。
你可以使用像這樣的顏色選擇器https://htmlcolorcodes.com/color-picker/來獲得你的顏色
。你也可以使用:
window = sg.Window('Virus Simulation', layout, background_color='hex_color_code')
要改變一個視窗物件的顏色
uj5u.com熱心網友回復:我在2個方面感到有點困惑。
1 - 我在你的代碼中沒有看到對sg.theme()的呼叫,所以我不知道它在代碼中的位置。 它被放在哪里很重要。 總是盡可能早地放置主題,肯定是在做布局之前。
2 - 我不知道 "這次不作業是什么意思"。還是那句話,這更像是需要看到一個完整的例子來了解它。
問題中的示例代碼,你說通常情況下是有效的,但格式很奇怪,所以一定是有什么東西被擾亂了。
該問題顯示。sg.theme="color
但正如Jason所指出的,傳遞給sg.theme()的值不僅僅是一種顏色。PySimpleGUI的主要檔案中描述了 "主題名稱公式"--https://pysimplegui.readthedocs.io/en/latest/#theme-name-formula。 如果在進入該部分時有問題,下面是它的內容:
主題名稱公式
你指定的主題名稱可以是"模糊的"。該文本不必須與你看到的列印內容完全一致。例如"Dark Blue 3" and "DarkBlue3" 和 "DarkBlue3" and "dark blue 3" all work.
快速確定最佳設定為你的視窗的一個方法是簡單地使用大量不同的主題來顯示你的視窗。添加這行代碼以設定主題 - theme('Dark Green 1'),運行你的代碼,看看是否你喜歡它。如果 不是,將主題字串改為'深綠色2' 和 再次嘗試。重復進行,直到你找到你喜歡的東西。
"公式" 對于字串是。
暗色#
或者: 深色 #
淺色 # :淺色
顏色可以是藍色、綠色、黑色、灰色、紫色、棕色、茶色、紅色。#是可選的,或者可以從1到XX。有些顏色有很多選擇。例如,有13個 "淺棕色 "的選擇。
如果你只想改變你的主題的背景顏色,那么你可以使用單獨的顏色名稱或十六進制值。 sg.theme_background_color('#FF0000')或者sg.theme_background_color('red')將設定背景顏色為紅色。
希望這對主題有幫助。
在使用PSG的編碼慣例方面做得不錯。因此,查看你的代碼是毫不費力的。 對于我所看到的東西,沒有任何猜測。 很高興看到這一點,當你使用它們時,它在許多方面都有幫助。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/315125.html
標籤:
