Ant*_*amp 25 python macos tkinter
我一直在编写Python编程中的Tkinter章节,遇到一个问题,即按钮的前景色和背景色不会改变.我正在使用Python 2.6.1开发Mac OS X 10.6系统.标签的颜色会改变,但不会改变按钮的颜色.例如:
from Tkinter import *
Label(None, text='label', fg='green', bg='black').pack()
Button(None, text='button', fg='green', bg='black').pack()
mainloop()
Run Code Online (Sandbox Code Playgroud)
在我的Mac系统上,标签的颜色会发生变化,但按钮的颜色却没有变化.在使用Python 2.6.1的Windows系统上,标签和按钮的颜色都会发生变化.
谁知道出了什么问题?
我检查了Interface Builder,看来没有选项可以更改该工具中按钮的前景色或背景色.可以编辑标签的前景色和背景色.
Mac OS X渲染系统(Quartz?)可能不支持(轻松)更改按钮的fg和bg.
Luk*_*err 22
有一个解决方案可以在Mac上更改按钮的背景.
使用:
highlightbackground=color
Run Code Online (Sandbox Code Playgroud)
例如:
submit = Button(root, text="Generate", highlightbackground='#3E4149')
Run Code Online (Sandbox Code Playgroud)
这导致以下,一个适合背景的漂亮按钮:
Vic*_*tor 16
您可以使用PyPI 中的tkmacosx库来实现。
安装:
对于 Python 2,使用pip install tkmacosx.
对于 Python 3,请使用pip3 install tkmacosx.
这是你如何使用tkmacosx:
from tkinter import *
from tkmacosx import Button
root = Tk()
B1 = Button(root, text='Mac OSX', bg='black',fg='green', borderless=1)
B1.pack()
root.mainloop()
Run Code Online (Sandbox Code Playgroud)
它在 Mac OS X 上运行良好。
Jas*_*ter 13
对于像我一样遇到这个问题的其他人,解决方案是使用ttk模块,默认情况下在OS X 10.7上可用.不幸的是,设置背景颜色仍然无法开箱即用,但文字颜色确实如此.
它需要对代码进行一些小改动:
原版的:
from Tkinter import *
Label(None, text='label', fg='green', bg='black').pack()
Button(None, text='button', fg='green', bg='black').pack()
mainloop()
Run Code Online (Sandbox Code Playgroud)
用ttk:
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
# background="..." doesn't work...
ttk.Style().configure('green/black.TLabel', foreground='green', background='black')
ttk.Style().configure('green/black.TButton', foreground='green', background='black')
label = ttk.Label(root, text='I am a ttk.Label with text!', style='green/black.TLabel')
label.pack()
button = ttk.Button(root, text='Click Me!', style='green/black.TButton')
button.pack()
root.mainloop()
Run Code Online (Sandbox Code Playgroud)
小智 5
很烦人,多年后这仍然是一个问题。
无论如何,正如其他人所提到的,highlightbackground(边框颜色)可以用来代替 Mac 上的背景。如果您将边框的大小增加到很大(按钮的大小或更大),您将获得漂亮的纯色背景色。这将使您的按钮具有标签的外观。
如果您使用 place,这有效,但如果您使用类似 grid 的东西,则无效。不幸的是,对于网格,增加边框大小会自动增加按钮大小。
然而,如果你必须使用网格,你总是可以破解它......创建你的无色网格按钮。接下来使用 place 在它上面设置一个背景颜色按钮。这将是带有“命令”的按钮或您将事件绑定到的按钮。
如果您希望您的代码独立于操作系统,您可以添加一个“if OS ==“Mac””语句,或者甚至添加一个自定义函数来修改按钮,如果它在 Mac 上,但在 Windows 或 Linux 上则保留它。这是前者:
from tkinter import *
import platform
if platform.system() == "Darwin": ### if its a Mac
B = Button(text="Refersh All Windows", highlightbackground="Yellow", fg="Black", highlightthickness=30)
else: ### if its Windows or Linux
B = Button(text="Refresh All Windows", bg="Yellow", fg="Black")
B.place(x=5, y=10, width=140, height=30)
mainloop()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
64740 次 |
| 最近记录: |