2008-11-16 4 views
26

Tôi đang tạo một giao diện GUI nhỏ cho một ứng dụng tại thời điểm này bằng cách sử dụng wxPython.wxPython, Đặt giá trị của StaticText()

Tôi đang sử dụng wx.StaticText() để tạo ra một nơi để giữ một số văn bản, mã bên dưới:

content = wx.StaticText(panel, -1, "Text Here", style=wx.ALIGN_CENTRE) 

Tôi có một nút khi lấy nhấp dữ liệu từ MySQL, tôi muốn thay đổi giá trị của StaticText() đến Dữ liệu MySQL hoặc những gì khác tôi có thể sử dụng giữ dữ liệu.

Tôi đã thử bằng cách sử dụng phương pháp dưới đây:

contents = wx.TextCtrl(bkg, style=wx.TE_MULTILINE | wx.HSCROLL) 
content.SetValue("New Text") 

này hiển thị tốt dữ liệu nhưng sau khi dữ liệu được nạp, bạn có thể chỉnh sửa dữ liệu và tôi không muốn điều này.

Hy vọng bạn hiểu những gì tôi đang cố gắng để làm, tôi mới để Python :)

Cheers

Trả lời

20

wx.TextCtrl có một phong cách được gọi là wx.TE_READONLY. Sử dụng nó để làm cho nó chỉ đọc.

Là một sidenode, bạn có thể sử dụng C++ wxWidgets Manual cho wxPython. Trường hợp xử lý đặc biệt cho wxPython hoặc các cổng khác là cần thiết, hướng dẫn thường chỉ ra sự khác biệt.

+0

Chúc mừng! Hoạt động hoàn hảo – RailsSon

55

Nếu bạn đang sử dụng một wx.StaticText() bạn có thể chỉ:

def __init__(self, parent, *args, **kwargs): #frame constructor, etc. 
    self.some_text = wx.StaticText(panel, wx.ID_ANY, label="Awaiting MySQL Data", style=wx.ALIGN_CENTER) 

def someFunction(self): 
    mysql_data = databasemodel.returnData() #query your database to return a string 
    self.some_text.SetLabel(mysql_data) 

Như litb đã đề cập, các tài liệu wxWidgets thường dễ dàng hơn để sử dụng hơn so với wxPython docs. Để thấy rằng các SetLabel() chức năng có thể được áp dụng cho một trường hợp wx.StaticText, bạn phải đi lên hệ thống phân cấp không gian tên trong tài liệu wxPython để wxWindow superclass, từ đó wx.StaticText được phân lớp. Có một vài điều khác nhau trong wxPython từ wxWidgets, và nó có thể là thử thách để tìm ra chúng là gì. May mắn thay, rất nhiều thời gian, sự khác biệt là các chức năng tiện lợi đã được thêm vào wxPython và không được tìm thấy trong wxWidgets.

+2

Tôi chắc chắn tự hỏi tại sao không có gì giống như SetLabel là trong tài liệu wxPython (của wx.StaticText). +1 để xóa – Ariel