คือผม เพิ่งจะเรียนโปรแกรม Python มา แล้วเรื่อง อัลกอริทึ่ม ไม่ต้องพูดถึงเลยครับ ไม่ค่อยเข้าใจมากเท่าไหร่
ก้เลยดันไปก๊อปในเวปส่งอาจารย์แล้วทีนี่ อาจารย์ดันให้แสดงค่ามากกว่าในเวป คราวนี้เลยกลายเป็นปัญหาเลยครับ
ว่า โปรเจค ผมทำเรื่องแปลงค่าตัวเลขเป็นตัวหนังสือ แล้วทีนี่ พอแปลงค่าเสร็จด้วบย คำสั่ง ฟังก์ชัน แล้ว อาจารย์ให้แสดงค่าออกมาในรูปของ หน้าต่าง Windos ครับ ซึ่งผมลองทำดูแล้วไม่ได้ เพื่อนๆ คนไหนพอจะแนะนำหรือสงเคราะห์ได้บ้างครับนี่
แบบนี้ป่าวครับ http://wxpython.org/screenshots.php
เลือกเอาเลยครับหรือ seaarch พวก GUI python , graphical with python อะไรพวกนี้ครับอันนี้ตัวอย่าง
http://wiki.python.org/moin/GuiProgramming
http://zetcode.com/wxpython/
ใช่เลยครับ เหมือนใน สองรูปแรกอะครับ แต่ของผมพอใส่ช่องแรก คือตัวเลข แล้วช่องที่สองเป็นการแปลงค่าของตัวเลขนั้นเป็นตัวหนังสือน่ะครับ
ต้องทำอย่างไรบ้างครับ แนะนำให้ด้วยน่ะครับ
ขอขอบคุณล่วงหน้าก่อนเลยคร๊าฟฟ
มีโค้ดตัวอย่างในเว็บนั่นเลยครับ ลองดู http://wxpython.org/test1.py.html
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python32\lib\tkinter__init__.py", line 1399, in call
return self.func(*args)
TypeError: readnum() takes at least 1 argument (0 given)
มันขึ้นอย่างนี้อ่ะครับ
อันนี้เป็น โปรดเจคผม
def readnum(num, exact=True):
num=int(num)
if num < 10:
if num == 9:
return "เก้า"
elif num == 8:
return "แปด"
elif num == 7:
elif num == 6:
return "หก"
elif num == 5:
return "ห้า"
elif num == 4:
elif num == 3:
return "สาม"
elif num == 2:
return "สอง"
elif num == 1 and exact:
return "หนึ่ง"
elif num == 1 and not exact:
else:
else:
if num < 20 and num >= 10:
return "สิบ%s"%(readnum(num-10, False).replace("ศูนย์", ""))
import math
if num < 100:
minus = int(math.floor(num/10)*10)
return "%sสิบ%s"%(readnum(minus/10).replace("ศูนย์", "").replace("สอง", "ยี่"), readnum(num-minus, False).replace("ศูนย์", ""))
elif num < 1000:
minus = int(math.floor(num/100)*100)
return "%sร้อย%s"%(readnum(minus/100), readnum(num-minus, False).replace("ศูนย์", ""))
elif num < 10000:
minus = int(math.floor(num/1000)*1000)
return "%sพัน%s"%(readnum(minus/1000), readnum(num-minus, False).replace("ศูนย์", ""))
elif num < 100000:
minus = int(math.floor(num/10000)*10000)
return "%sหมื่น%s"%(readnum(minus/10000), readnum(num-minus, False).replace("ศูนย์", ""))
elif num < 1000000:
minus = int(math.floor(num/100000)*100000)
return "%sแสน%s"%(readnum(minus/100000), readnum(num-minus, False).replace("ศูนย์", ""))
else:
minus = int(math.floor(num/1000000)*1000000)
return "%sล้าน%s"%(self.readnum(minus/1000000), self.readnum(num-minus, False).replace("ศูนย์", ""))
import tkinter
import sys
root = tkinter.Tk()
root.title("แปรงตัวเลข")
root.resizable(width=True,height=True)
mainFrame = tkinter.Frame(root,borderwidth=1,padx=5,pady=5)
mainFrame.pack()
varNumber = tkinter.StringVar()
varChagne = tkinter.StringVar()
NumberLabel = tkinter.Label(mainFrame,text="Number :")
NumberLabel.grid(row=1,column=1)
NumberEntry = tkinter.Entry(mainFrame,textvariable=varNumber)
NumberEntry.grid(row=1,column=2)
ChagneLabel = tkinter.Label(mainFrame,text="Chagne :")
ChagneLabel.grid(row=2,column=1)
ChagneEntry = tkinter.Entry(mainFrame,textvariable=varChagne)
ChagneEntry.grid(row=2,column=2)
tkinter.Button(root,text="ok",command=readnum).pack()
tkinter.mainloop()
คำถามแรกเลยน่ะครับ
1.ผมควรสร้างอีก ฟังก์ชันเพื่อรันค่า ฟังก์ชัน readnum(num, exact=True):หรือ ไม่ต้องสร้างก็ได้เพียงผูกค่าฟังก์ชัน เข้ากับvarNumber = tkinter.StringVar() กับ varChagne = tkinter.StringVar() ได้เลยครับ
2แล้วเมื่อผมสร้างฟังก์ชันใหม่ขึ้นมาจะเรียกค่าฟังก์ชันแแรกยังไงแล้วผูกค่าให้มันแสดงใน ช่องWindows ยังไงเหรอครับ
3.หรือการเขียนมัน ผิด? ช่วยแนะนำด้วยน่ะครับ
ปล.โปรเจค จะส่งวันพรุ่งนี้แล้ว นั่ง เขียนอยู่นานไม่รันขึ้นสักทีครับ ผู้ีรู้ ผู้ชำนาญช้วยชี้แนะ ด้วยครับผมTT
ปล.ขอพระคุณอย่างสูงสุดใน 3 โลกครับ!!!
File "C:\Python32\lib\tkinter__init__.py", line 1399, in call
return self.func(*args)
TypeError: test() takes exactly 2 arguments (0 given)
มันขึ้นยังนี้คือ
1.ผมต้องสร้าง อีกฟังก์ชันอีก อัน แล้วเรียกค่า ฟังก์ชัน readnum ใช่ไหมครับ
2.แล้วผูกค่าจากฟังก์ชันที่สร้างขึ้นมารึเปล่าครับ