Python UI - 自定义

时间:2013-07-26 21:02:53

标签: python user-interface

我更喜欢Tkinter,但是最好的UI库可以轻松完成以下任务:

透明意味着透过整个窗口

  • 透明背景
  • 没有边框
  • 文本框的透明背景(带滚动条),但仍显示文字
  • 更改滚动条的外观
  • 更改输入框的外观

在python库中所有这些都可能吗?我正在使用Windows 7和python 2.7(如果库在3中,那么我将在3中编码)。

您能否提供链接/示例,说明如何在库中进行操作?

2 个答案:

答案 0 :(得分:3)

Tkinter在美学方面非常有限,但绝对可以完成工作

你可以尝试pythonwx这更美观,并且可以比Tk更强一点编辑:看起来像wx可以制作透明窗口

如果透明你的意思是你可以看到窗口后面的内容可能很难用任何python库

虽然大多数人都不认为pygame是用户界面的库,但是我用它来构建非常好看的GUI,就像这个天气应用程序!它看起来非常好但是因为pygame不是为了构建gui而使它更复杂并且需要更多的代码

Weather App

你还应该看看Pyside我还没有用过它,但我听说它很不错 另请查看pyGTK

我不确定这些建议是否可以完成您所要求的所有建议,但会查看所有建议然后再决定

希望这有帮助!

答案 1 :(得分:1)

您可以使用wxPython设置框架的透明度。您只需使用wx.Frame.SetTransparent()方法,该方法将参数从0(完全透明)变为255(完全不透明)。

你可以获得Python 2.7 here的wxPython,或者你可以获得Python 3.x here的构建。

这是一个代码片段和截图,用于查看包含文本框,标签和按钮的框架,其中alpha设置为200,在我的文本编辑器前面有一些文本。

import wx

class TransparentFrame(wx.Frame):
    ''' Transparent Frame '''
    DEFAULT_ALPHA = 200
    DEFAULT_SIZE = (400, 200)
    TEXTCTRL_SIZE = (200, 100)
    def __init__(self, size=DEFAULT_SIZE, *args, **kwargs):
        wx.Frame.__init__(self, None, size=size, title='This is my title', *args, **kwargs)
        # This is all you need to make the window transparent.
        self.SetTransparent(self.DEFAULT_ALPHA)

        label = wx.StaticText(self, label= 'Here is a label:  ')

        text = wx.TextCtrl(self, style=wx.TE_MULTILINE, size=self.TEXTCTRL_SIZE)
        text.WriteText('Fill the box with text!\n' * 10)

        button = wx.Button(self, label='This is a button')

        sizer = wx.BoxSizer(wx.HORIZONTAL)
        sizer.AddMany([label, text, button])
        self.SetSizer(sizer)

if __name__ == '__main__':
    app = wx.App(False)
    frame = TransparentFrame()
    frame.Show()
    app.MainLoop()

Transparent frame over my text editor